{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "文件读取成功！\n",
      "文件内容：\n",
      "     0     1    2    3     4     5     6     7\n",
      "0  学生1   NaN  NaN  NaN   NaN   NaN   NaN   NaN\n",
      "1   序号  课程目标   作业   实验  课堂练习  期中考试  成绩比例  期末成绩\n",
      "2    1   目标1   69   64    57    80   0.2    12\n",
      "3    2   目标2   62   76    80    80   0.4    25\n",
      "4    3   目标3   69   52    92    80   0.4    12\n",
      "每个学生的目标成绩：\n",
      "学生1: {'目标1': 12.87, '目标2': 27.36, '目标3': 19.7}\n",
      "学生2: {'目标1': 13.57, '目标2': 34.120000000000005, '目标3': 21.22}\n",
      "学生3: {'目标1': 13.57, '目标2': 22.12, '目标3': 29.020000000000003}\n",
      "每个目标的平均成绩：\n",
      "{'目标1': 13.336666666666666, '目标2': 27.86666666666667, '目标3': 23.313333333333333}\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24179 (\\N{CJK UNIFIED IDEOGRAPH-5E73}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 22343 (\\N{CJK UNIFIED IDEOGRAPH-5747}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 25104 (\\N{CJK UNIFIED IDEOGRAPH-6210}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 32489 (\\N{CJK UNIFIED IDEOGRAPH-7EE9}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 30446 (\\N{CJK UNIFIED IDEOGRAPH-76EE}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 26631 (\\N{CJK UNIFIED IDEOGRAPH-6807}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 25955 (\\N{CJK UNIFIED IDEOGRAPH-6563}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 28857 (\\N{CJK UNIFIED IDEOGRAPH-70B9}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 22270 (\\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20998 (\\N{CJK UNIFIED IDEOGRAPH-5206}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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AEaWTEPp+BfHpqf7W716dSxcuDAiIv7pn/4pli9fHp/5zGdi3759MXny5Pj2t78dX/ziFwd5WwBOJ3XVlW8/1Ic5AEaWzA+9ezvjx4+P1atXD8I2AAwnF0+tjQn5ythTONTl55RyETE+f+xU4QCQGjJnvQOA/lQ2Khcrrp4WEcei6K2OX19x9TQncgCgS0IJgGFr3vQJce9n3x/j850Prxufr4x7P/t+36MEQLeGxOnBAWCgzJs+IT48bXxsbdkXe/cfirrqY4fbeScJYODl8/nYsGFDbNiw4aT75s6dG6+//npcdNFFXT521KhRMXHixPja177W5f1f//rX+3XXVK7Umw8KncaKxWLk8/koFApRU1OT9ToAANBnhw4dipaWlpg6dWpUVjoJTU96+l31pQ0cegcAAJAQSgAAcJoY5geD9Yv++h0JJQAAGOJGjx4dEREHDx7MeJOh7/jv6Pjv7FQ5mQMAAAxxZWVlMW7cuNi7d29ERIwdOzZyOSeleatSqRQHDx6MvXv3xrhx46KsrOzPej6hBAAAp4Hx48dHRHTEEl0bN25cx+/qzyGUAADgNJDL5WLChAlRV1cXhw8fznqdIWn06NF/9jtJxwklAAA4jZSVlfVbDNA9J3MAAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACARKah1NjYGDNmzIjq6uqoq6uL+fPnxwsvvHDS3PPPPx/XXHNN5PP5qK6ujksuuSR+//vfZ7AxAAAwEmQaSs3NzbF48eJ48skn47HHHosjR47EnDlz4sCBAx0zv/vd72LmzJnxnve8J5qamuK3v/1tfPOb34zKysoMNwcAAIazXKlUKmW9xHF//OMfo66uLpqbm2PWrFkREfHJT34yRo8eHT/96U9P6TmLxWLk8/koFApRU1PTn+sCAACnkb60wZD6jFKhUIiIiNra2oiIaG9vj0ceeSTe/e53x9y5c6Ouri4+8IEPxLp167p9jra2tigWi50uAAAAfTFkQqlUKsWyZcti5syZMX369IiI2Lt3b7S2tsZ3vvOdmDdvXjz66KPxkY98JD760Y9Gc3Nzl8/T2NgY+Xy+49LQ0DCYfw0AAGAYGDKH3i1evDgeeeSR2LJlS0ycODEiInbv3h3vfOc741Of+lSsWbOmY/aaa66JM844Ix588MGTnqetrS3a2to6rheLxWhoaHDoHQAAjHB9OfSufJB26tHSpUtj/fr1sXnz5o5Iiog4++yzo7y8PKZNm9Zp/oILLogtW7Z0+VwVFRVRUVExoPsCAADDW6ahVCqVYunSpbF27dpoamqKqVOndrp/zJgxMWPGjJNOGf7iiy/G5MmTB3NVAABgBMk0lBYvXhxr1qyJhx56KKqrq2PPnj0REZHP56OqqioiIm6++eb4xCc+EbNmzYrLLrssNm7cGA8//HA0NTVluDkAADCcZfoZpVwu1+Xtq1evjoULF3Zcv++++6KxsTH+8Ic/xPnnnx8rV66Ma6+9tlc/w+nBAQCAiL61wZA5mcNAEUoAAEDEafw9SgAAAEOBUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACARKah1NjYGDNmzIjq6uqoq6uL+fPnxwsvvNDt/I033hi5XC7uuuuuwVsSAAAYcTINpebm5li8eHE8+eST8dhjj8WRI0dizpw5ceDAgZNm161bF0899VTU19dnsCkAADCSlGf5wzdu3Njp+urVq6Ouri62bdsWs2bN6rj9lVdeiSVLlsQvfvGLuOqqq3p8zra2tmhra+u4XiwW+3dpAABg2BtSn1EqFAoREVFbW9txW3t7e1x//fVx8803x3vf+963fY7GxsbI5/Mdl4aGhgHbFwAAGJ6GTCiVSqVYtmxZzJw5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9KMREfGP//iPcc4558SaNWvixhtvzGJtAABgmOvzZ5T+3//7f72e7atCoRAREbW1tRER0dLSEnv27Ik5c+Z0zFRUVMSll14aTzzxRJeh1NbWFm1tbR3Xi8Vin/cAAABGtj6F0j333NOn8Jg7d26vZ0ulUixbtixmzpwZ06dPj4iIPXv2RETEOeec02n2nHPOiZdffrnL52lsbIyVK1f2+ucCAACk+hRKH/zgBwdqj1iyZEk888wzsWXLlpPuS08KUSqVuj1RxPLly2PZsmUd14vFYjQ0NPTvsgAAwLCW6WeUjlu6dGmsX78+Nm/eHBMnTuy4ffz48RFx7J2lCRMmdNy+d+/ek95lOq6ioiIqKioGdmEAAGBYy/Ssd6VSKZYsWRI///nP41e/+lVMnTq10/1Tp06N8ePHx2OPPdZx25tvvhnNzc3xoQ99aLDXBQAARohM31FavHhxrFmzJh566KGorq7u+ExSPp+PqqqqyOVy8ZWvfCVuv/32OO+88+K8886L22+/PcaOHRuf/vSns1wdAAAYxjINpXvvvTciImbPnt3p9tWrV8fChQsjIuJv//Zv44033ohFixbFn/70p/jABz4Qjz76aFRXVw/ytgAAwEiRK53KebxPI8ViMfL5fBQKhaipqcl6HQAAICN9aYNMP6MEAAAwFAklAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEgIJQAAgIRQAgAASAglAACAhFACAABICCUAAICEUAIAAEhkGkqbN2+Oq6++Ourr6yOXy8W6des63d/a2hpLliyJiRMnRlVVVVxwwQVx7733ZrMsAAAwYmQaSgcOHIgLL7wwVq1a1eX9N910U2zcuDEeeOCBeP755+Omm26KpUuXxkMPPTTImwIAACNJeZY//Iorrogrrrii2/t//etfx4IFC2L27NkREXHDDTfEj370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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 26609 (\\N{CJK UNIFIED IDEOGRAPH-67F1}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 29366 (\\N{CJK UNIFIED IDEOGRAPH-72B6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAIhCAYAAABwnkrAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAcwElEQVR4nO3df2xV9f348VeFccFZyhD7g1iQKMvmMP4hKhLFamaFGRPUOaduk7gfONHEEGNgZrH+gmk2wx9Elm0J0zimyTadERUxBtAwf6FMY4xihNkNGwNKL6DWAPfzx770u7741apwLu3jkZxk55z3vbwwOSPPnntuayqVSiUAAADodkTRAwAAAFQboQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAksFFDwDA4enNN9+MM844Y79rnn322TjrrLP2u+all16KHTt2HPC9BuK68ePH73cNAAePUALgc9m5c2dMmDAhnnvuub2eP/PMM6OmpuaAa3bu3Nmr9xqI6wAojo/eAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIBhc9AACHp0GDBsU///nPGDFixF7P79y5M3bu3HnANUcccUSv3msgrgOgODWVSqVS9BAAAADVxI+rAAAAEqEEAACQCCUAAICk33+Zw65du2Ljxo1RW1sbNTU1RY8DAAAUpFKpxNatW2P06NEH/NKcfh9KGzdujObm5qLHAAAAqkR7e3sce+yx+13T70OptrY2Iv77H2P48OEFTwMAABSlXC5Hc3NzdyPsT78Ppd0ftxs+fLhQAgAAevVIji9zAAAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAAJLBRQ8A0F8dN2dp0SNAVdvwqwuKHgFgn9xRAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAASaGhNH/+/Dj11FOjtrY26uvrY/r06fHWW2/1WDNjxoyoqanpsU2aNKmgiQEAgIGg0FBauXJlzJo1K55//vlYvnx57NixI1pbW2P79u091k2dOjXef//97u3xxx8vaGIAAGAgGFzkH/7kk0/22F+8eHHU19fHmjVrYsqUKd3HS6VSNDY2HurxAACAAaqqnlHq7OyMiIiRI0f2OL5ixYqor6+Pr3/96/HTn/40Pvjgg32+R1dXV5TL5R4bAABAX1RNKFUqlZg9e3aceeaZMWHChO7j06ZNiz/96U/xzDPPxG9+85t46aWX4txzz42urq69vs/8+fOjrq6ue2tubj5UfwUAAKCfqKlUKpWih4iImDVrVixdujSee+65OPbYY/e57v3334+xY8fGgw8+GBdffPEe57u6unpEVLlcjubm5ujs7Izhw4cflNkB9ua4OUuLHgGq2oZfXVD0CMAAUy6Xo66urldtUOgzSrtdf/318eijj8aqVav2G0kREU1NTTF27NhYt27dXs+XSqUolUoHY0wAAGCAKDSUKpVKXH/99fHwww/HihUrYty4cQd8zebNm6O9vT2ampoOwYQAAMBAVOgzSrNmzYoHHngglixZErW1tdHR0REdHR3xySefRETEtm3b4sYbb4x//OMfsWHDhlixYkVceOGFMWrUqLjooouKHB0AAOjHCr2jtGjRooiIaGlp6XF88eLFMWPGjBg0aFC8/vrrcf/998eWLVuiqakpzjnnnHjooYeitra2gIkBAICBoPCP3u3PsGHDYtmyZYdoGgAAgP+qmq8HBwAAqBZCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEgGFz0AAMDh7rg5S4seAarahl9dUPQIfeaOEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAABJoaE0f/78OPXUU6O2tjbq6+tj+vTp8dZbb/VYU6lUoq2tLUaPHh3Dhg2LlpaWeOONNwqaGAAAGAgKDaWVK1fGrFmz4vnnn4/ly5fHjh07orW1NbZv39695u6774577rknFi5cGC+99FI0NjbGeeedF1u3bi1wcgAAoD8bXOQf/uSTT/bYX7x4cdTX18eaNWtiypQpUalUYsGCBXHzzTfHxRdfHBER9913XzQ0NMSSJUti5syZRYwNAAD0c1X1jFJnZ2dERIwcOTIiItavXx8dHR3R2travaZUKsXZZ58dq1ev3ut7dHV1Rblc7rEBAAD0RdWEUqVSidmzZ8eZZ54ZEyZMiIiIjo6OiIhoaGjosbahoaH7XDZ//vyoq6vr3pqbmw/u4AAAQL9TNaF03XXXxWuvvRZ//vOf9zhXU1PTY79SqexxbLe5c+dGZ2dn99be3n5Q5gUAAPqvQp9R2u3666+PRx99NFatWhXHHnts9/HGxsaI+O+dpaampu7jH3zwwR53mXYrlUpRKpUO7sAAAEC/VugdpUqlEtddd1387W9/i2eeeSbGjRvX4/y4ceOisbExli9f3n3ss88+i5UrV8bkyZMP9bgAAMAAUegdpVmzZsWSJUvi73//e9TW1nY/d1RXVxfDhg2LmpqauOGGG2LevHkxfvz4GD9+fMybNy+OPPLIuOKKK4ocHQAA6McKDaVFixZFRERLS0uP44sXL44ZM2ZERMRNN90Un3zySVx77bXx0Ucfxemnnx5PPfVU1NbWHuJpAQCAgaLQUKpUKgdcU1NTE21tbdHW1nbwBwIAAIgq+tY7AACAaiGUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASAb3ZfGMGTPi7bff7vX6E088Mf7whz/0eSgAAIAi9SmUXnvttXjllVd6vf60007r80AAAABF89E7AACARCgBAAAkhYbSqlWr4sILL4zRo0dHTU1NPPLIIz3Oz5gxI2pqanpskyZNKmZYAABgwCg0lLZv3x4nn3xyLFy4cJ9rpk6dGu+//3739vjjjx/CCQEAgIGoT1/mUKlU4uqrr+712kqlst8106ZNi2nTpu13TalUisbGxl7PCAAA8EX1KZQeeeSR+PTTT3u9ftiwYX0eKFuxYkXU19fHiBEj4uyzz44777wz6uvr97m+q6srurq6uvfL5fIXngEAABhY+hRKa9asiU2bNvV6fX19fYwZM6bPQ+02bdq0uPTSS2Ps2LGxfv36+OUvfxnnnnturFmzJkql0l5fM3/+/Lj11ls/958JAADQp2eU7rjjjhg6dGiUSqVebfPmzftCw1122WVxwQUXxIQJE+LCCy+MJ554It5+++1YunTpPl8zd+7c6Ozs7N7a29u/0AwAAMDA0+dnlH70ox/1ev3+vqTh82hqaoqxY8fGunXr9rlmd6QBAAB8Xn26o1RTU9OnN+/r+gPZvHlztLe3R1NT05f6vgAAAP+rT3eUvmzbtm2Ld955p3t//fr1sXbt2hg5cmSMHDky2tra4pJLLommpqbYsGFD/OIXv4hRo0bFRRddVODUAABAf1doKL388stxzjnndO/Pnj07IiKuuuqqWLRoUbz++utx//33x5YtW6KpqSnOOeeceOihh6K2traokQEAgAGgz88orVq1qtdrD/R7lFpaWva7ZtmyZX0ZDwAA4EvRp1C6+uqr44knnuj1+hkzZvR1HgAAgML1KZR+/vOfx65du3q9/ogj+vRdEQAAAFWhT6F02mmnxYgRI3q1tlKpxMcffxwvvPDC55kLAACgMH1+RumZZ57p9fpTTz21zwMBAAAU7bD6PUoAAACHgoeIAAAAEqEEAACQCCUAAICkT1/mcPTRR8fkyZN7vX7UqFF9HggAAKBofQqliRMnxoYNG3q9/oQTTujrPAAAAIXrUygtW7YsHnnkkahUKr1af+mll8btt9/+uQYDAAAoSp9/j9KYMWP6tB4AAOBw4/coAQAAJL71DgAAIBFKAAAASZ+fUbrtttt6vRYAAOBw1KdQuvfee6NcLvd6/fnnn9/ngQAAAIrWp1A644wzDtYcAAAAVcMzSgAAAEmf7ijxxR03Z2nRI0DV2/CrC4oeAQAY4NxRAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAEmhobRq1aq48MILY/To0VFTUxOPPPJIj/OVSiXa2tpi9OjRMWzYsGhpaYk33nijmGEBAIABo9BQ2r59e5x88smxcOHCvZ6/++6745577omFCxfGSy+9FI2NjXHeeefF1q1bD/GkAADAQDK4yD982rRpMW3atL2eq1QqsWDBgrj55pvj4osvjoiI++67LxoaGmLJkiUxc+bMQzkqAAAwgFTtM0rr16+Pjo6OaG1t7T5WKpXi7LPPjtWrV+/zdV1dXVEul3tsAAAAfVG1odTR0REREQ0NDT2ONzQ0dJ/bm/nz50ddXV331tzcfFDnBAAA+p+qDaXdampqeuxXKpU9jv2vuXPnRmdnZ/fW3t5+sEcEAAD6mUKfUdqfxsbGiPjvnaWmpqbu4x988MEed5n+V6lUilKpdNDnAwAA+q+qvaM0bty4aGxsjOXLl3cf++yzz2LlypUxefLkAicDAAD6u0LvKG3bti3eeeed7v3169fH2rVrY+TIkTFmzJi44YYbYt68eTF+/PgYP358zJs3L4488si44oorCpwaAADo7woNpZdffjnOOeec7v3Zs2dHRMRVV10Vf/zjH+Omm26KTz75JK699tr46KOP4vTTT4+nnnoqamtrixoZAAAYAAoNpZaWlqhUKvs8X1NTE21tbdHW1nbohgIAAAa8qn1GCQAAoChCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiEEgAAQCKUAAAAEqEEAACQCCUAAIBEKAEAACRCCQAAIBFKAAAAiVACAABIhBIAAEAilAAAABKhBAAAkAglAACARCgBAAAkQgkAACARSgAAAIlQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAAJEIJAAAgEUoAAACJUAIAAEiqOpTa2tqipqamx9bY2Fj0WAAAQD83uOgBDuRb3/pWPP300937gwYNKnAaAABgIKj6UBo8eLC7SAAAwCFV1R+9i4hYt25djB49OsaNGxff//734913393v+q6uriiXyz02AACAvqjqUDr99NPj/vvvj2XLlsXvf//76OjoiMmTJ8fmzZv3+Zr58+dHXV1d99bc3HwIJwYAAPqDqg6ladOmxSWXXBInnXRSfPvb346lS5dGRMR99923z9fMnTs3Ojs7u7f29vZDNS4AANBPVP0zSv/rq1/9apx00kmxbt26fa4plUpRKpUO4VQAAEB/U9V3lLKurq548803o6mpqehRAACAfqyqQ+nGG2+MlStXxvr16+OFF16I7373u1Eul+Oqq64qejQAAKAfq+qP3v373/+Oyy+/PDZt2hTHHHNMTJo0KZ5//vkYO3Zs0aMBAAD9WFWH0oMPPlj0CAAAwABU1R+9AwAAKIJQAgAASIQSAABAIpQAAAASoQQAAJAIJQAAgEQoAQAA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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "目标达成度表格：\n",
      "   目标达成度  目标1  目标2  目标3\n",
      "0    平均值  5.0  5.0  5.0\n",
      "1  90%以上  0.0  0.0  0.0\n",
      "2  80%以上  0.0  0.0  0.0\n",
      "3  70%以上  0.0  0.0  0.0\n",
      "4  60%以上  0.0  0.0  0.0\n",
      "5  60%以下  3.0  3.0  3.0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20154 (\\N{CJK UNIFIED IDEOGRAPH-4EBA}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 25968 (\\N{CJK UNIFIED IDEOGRAPH-6570}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 30446 (\\N{CJK UNIFIED IDEOGRAPH-76EE}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 26631 (\\N{CJK UNIFIED IDEOGRAPH-6807}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 36798 (\\N{CJK UNIFIED IDEOGRAPH-8FBE}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 25104 (\\N{CJK UNIFIED IDEOGRAPH-6210}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24230 (\\N{CJK UNIFIED IDEOGRAPH-5EA6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 20998 (\\N{CJK UNIFIED IDEOGRAPH-5206}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 24067 (\\N{CJK UNIFIED IDEOGRAPH-5E03}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 26609 (\\N{CJK UNIFIED IDEOGRAPH-67F1}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 29366 (\\N{CJK UNIFIED IDEOGRAPH-72B6}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "f:\\6l\\Lib\\site-packages\\IPython\\core\\pylabtools.py:152: UserWarning: Glyph 22270 (\\N{CJK UNIFIED IDEOGRAPH-56FE}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAIhCAYAAAB5deq6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABFxUlEQVR4nO3deVyVZf7/8TeKLMriBiiKSmqkmCukiIpZirmN5VQTOWVlRaEOMuaEWimaNkpkGsn4TSNTW0a0zByTLNQmp1zQrNDs5zoq4cpRE9nO7w+/nm8nkEsTOBCv5+NxP+q+lvt8js6ZeHPd93WcrFarVQAAAACAq6rl6AIAAAAAoKojOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMHB2dAEAgOopKytLYWFhZY7ZvHmzevfuXeaYrVu3qrCw0Hgtxl19XNu2bcscAwC4cQQnAMBvUlRUpA4dOuiLL74otb9Xr15ycnIyjikqKrqmazHu6uMAABWPW/UAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgIGzowsAAFRPtWvX1q5du1S/fv1S+4uKilRUVGQcU6tWrWu6FuOuPg4AUPGcrFar1dFFAAAAAEBVxq+pAAAAAMCA4AQAAAAABgQnAAAAADCocZtDFBcX69ixY/L09JSTk5OjywEAAADgIFarVefOnZO/v79xs50aF5yOHTumgIAAR5cBAAAAoIo4cuSImjdvXuaYGhecPD09JV3+w/Hy8nJwNQAAAAAcxWKxKCAgwJYRylLjgtOV2/O8vLwITgAAAACu6REeNocAAAAAAAOCEwAAAAAYEJwAAAAAwKDGPeMEAAAAWK1WFRYWqqioyNGloILVqVNHtWvXvuHrEJwAAABQo+Tn5+v48eP6+eefHV0KKoGTk5OaN28uDw+PG7oOwQkAAAA1RnFxsQ4cOKDatWvL399fLi4u17SjGqonq9WqEydO6L///a/atm17QytPBCcAAADUGPn5+SouLlZAQIDq1q3r6HJQCXx8fHTw4EEVFBTcUHBicwgAAADUOLVq8WNwTVFeK4r8LwYAAAAADAhOAAAAAGDAM04AAACApFbPflxpr3XwpcGV9looH6w4AQAAANXA1KlT5eTkZHc0adLEbozVatXUqVPl7+8vd3d39e3bV999953dmLi4ODVs2FAtWrTQu+++a9f3/vvva+jQoeVad2pqqjp27Cg3Nzc1adJEY8aMsevfvXu3IiIi5O7urmbNmikhIUFWq9XWn5mZqS5dusjDw0PDhg3TmTNnbH2FhYXq2rWrtm7dWq41l4bgBAAAAFQTwcHBOn78uO3YvXu3Xf/s2bOVlJSk1157TVu3blWTJk3Uv39/nTt3TpL00Ucfafny5Vq/fr3+/ve/65FHHtGpU6ckSWfPntXkyZOVnJxcbvUmJSVp8uTJevbZZ/Xdd99pw4YNioyMtPVbLBb1799f/v7+2rp1q+bPn6/ExEQlJSXZxowePVr9+vXTjh07dPbsWc2cOdPWl5iYqF69eik0NLTcar4abtUDAAAAqglnZ+cSq0xXWK1WzZ07V5MnT9Y999wjSXrrrbfk5+en5cuX68knn1RWVpb69u2rkJAQhYSEKDY2Vvv371ejRo00ceJEPf3002rRokW51HrmzBlNmTJFH330ke644w5be3BwsO3fly1bpry8PKWmpsrV1VUdOnTQDz/8oKSkJMXFxcnJyUlZWVlatmyZbr75Zj3wwANas2aNJGn//v1avHixtm/fXi71mrDiBAAAAFQT+/btk7+/vwIDA/WnP/1J+/fvt/UdOHBA2dnZGjBggK3N1dVVERER+vLLLyVJnTp10rZt23TmzBlt375dFy9eVJs2bfTFF19ox44dGjduXLnVmp6eruLiYh09elTt2rVT8+bNdd999+nIkSO2MVu2bFFERIRcXV1tbZGRkTp27JgOHjxoqzk9PV2FhYXasGGDOnbsKEmKjo7W7Nmz5enpWW41l8WhwWnBggXq2LGjvLy85OXlpbCwMP3rX/8qc87GjRvVrVs3ubm56aabblJKSkolVQsAAAA4Tvfu3bVkyRJ98skn+p//+R9lZ2erZ8+etlvtsrOzJUl+fn528/z8/Gx9kZGRGjlypEJDQzVq1Ci99dZbqlevnp566in94x//0IIFCxQUFKTw8PASz0Zdr/3796u4uFgzZ87U3LlztWLFCp0+fVr9+/dXfn6+rebS6v3l+3njjTe0YsUKtW7dWi4uLoqPj9eSJUtUt25dhYaGKjIyUm3atNGUKVNuqF4Thwan5s2b66WXXtK2bdu0bds29evXT3/4wx+u+pd04MABDRo0SL1791ZmZqYmTZqkcePGKS0trZIrBwAAACrXXXfdpREjRujWW2/VnXfeqY8/vrwL4FtvvWU37tdf+Gq1Wu3apk6dqh9//FG7d+/W3XffrZkzZ+rOO+9UnTp1NGPGDH3xxRcaPXq0HnrooVLrOHz4sDw8PGzHL585+qXi4mIVFBRo3rx5ioyMVI8ePfTOO+9o3759+vzzz8us95ftwcHB2rhxow4dOqTly5eroKBAU6dO1WuvvaaxY8cqPDxcu3bt0sqVK/XRRx9dyx/lb+LQZ5x+vWPHiy++qAULFug///mP3b2PV6SkpKhFixaaO3euJKldu3batm2bEhMTNWLEiMooGQAAAKgS6tWrp1tvvVX79u2TJNuzT9nZ2WratKltXE5OTolVnSv27NmjZcuWKTMzU4sXL1afPn3k4+Oj++67T48++qgsFou8vLzs5vj7+2vnzp2284YNG5Z67Ss1tG/f3tbm4+Ojxo0b6/Dhw7aar6ws/bJeqeTK2RXjx49XbGysmjdvroyMDM2YMUP16tXT4MGDlZGRUe67Al5RZZ5xKioq0rvvvqsLFy4oLCys1DFbtmyxu2dTurzcuG3bNhUUFJQ659KlS7JYLHYHAAAAUN1dunRJWVlZtoASGBioJk2aKD093TYmPz9fGzduVM+ePUvMt1qteuKJJ/Tyyy/Lw8NDRUVFtp+pr/yzuLi4xDxnZ2e1adPGdlwtOIWHh0uS9u7da2s7ffq0Tp48qZYtW0qSwsLCtGnTJtute5K0fv16+fv7q1WrViWuuWHDBu3Zs8e2pfmvay4qKrrKn9aNc/iuert371ZYWJjy8vLk4eGhVatW2aXSX7raPZCFhYU6efKkXbK+YtasWZo2bVqF1F5ekqM/c3QJQJUWk9LP0SWUCz7rgBmfd1Q0N+9aunWot065nFcd53zzhAqSc+j6f5k/9cXJGnDHXWrWrLlOnjypV16bo9xciwbfcY/teqMfjtaLM2bK17uZAgNb69Xkl+Xm6q7+vYaUeM0ly9+Ut0cD9ejUVzmHLGp3U2e98MJUrV21QZ9lpCuo7S3Kz62lnNzftvBQ37WJBvYfrJinx+rlWa/Kw8NTL86epratb9btt98uSYqKitK0adM0atQoTZo0Sfv27dPMmTP1/PPPl7iF7+LFi4qJidG7776rWrUur/+Eh4crOTlZMTExSktLs9vGvLw5PDgFBQVp586dOnv2rNLS0vTwww9r48aNVw1Ppnsgfy0+Pl5xcXG2c4vFooCAgHKqHgAAAL8XXz/V29EllOnY8WOKHveYTp85pUYNG6tblxCtXfWpApr/3/bhY6JjlZeXp78991fl5p5V184heu/tVfLwsN95LudEjuYlJ2nNyvW2tq6du+mp0WM08tF71biRj+a9fOObsL2WlKLnpsfrwUfuVa1atRTWPVzvvJWmOnXqSJK8vb2Vnp6umJgYhYSEqEGDBoqLi7P7+f2KhIQEDRkyRJ07d7a1zZs3T1FRUerTp4+ioqIq9PEdJ+svv5a3CrjzzjvVunVr/eMf/yjR16dPH3Xp0kWvvvqqrW3VqlW677779PPPP9v+AspisVjk7e2t3NzcEvdrOgq/lQLKxm+ggZqDzzsq2pUVp2ZNA1TH2cXR5dRYvi0r7+fwvLw8HThwQIGBgXJzc7Pru55sUGWecbrCarXq0qVLpfaFhYXZ3bMpXb4HMiQk5JpCEwAAAAD8Fg4NTpMmTdLmzZt18OBB7d69W5MnT1ZGRoYefPBBSZdvs/vlNojR0dE6dOiQ4uLilJWVpcWLF2vRokWaMGGCo94CAAAAgBrAoc84/fTTT/rzn/+s48ePy9vbWx07dtS6devUv39/SdLx48dtWxVKl3cKWbt2rcaPH6/k5GT5+/tr3rx5bEUOAAAAoEI5NDgtWrSozP7U1NQSbREREdqxY0cFVQQAAAAAJVW5Z5wAAAAAoKohOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOH7qoHAAAAVBW+bwZU2mvlPHKk0l4L5YMVJwAAAKCaeTX5Zfm18taUac/atVutVs15ZZY63haklkF+uvv+wdrzQ5bdmOenT1JQp5bq2jNYq1avsOv7cM1KjXzs/nKr06+Vd4njraX2X0m0e/duRUREyN3dXc2aNVNCQoKsVqutPzMzU126dJGHh4eGDRumM2fO2PoKCwvVtWtXbd26tdxqvhqCEwAAAFCNZO7arrffSVX7WzqU6HstZa5SFiVrVsIcrVv9uXx8fHXfyOE6f/6cJOmTT/+llR/+U++9vUpT/jZNsc/E6PSZ05Kk3NyzmpU4XS8lJJZrva/OeV27v/7Bdtz3xyhbn8ViUf/+/eXv76+tW7dq/vz5SkxMVFJSkm3M6NGj1a9fP+3YsUNnz57VzJkzbX2JiYnq1auXQkNDy7Xm0hCcAAAAgGriwoXzejr2cb380jzV965v12e1WrVw8QLFxvxVgwcOU7ug9pr/coouXryolR/+U5K078e96tmjlzp37Kp7/vBHeXh66tDhA5KkhJee16iRo9W8Wfnesujl5S1fXz/b4e7mbutbtmyZ8vLylJqaqg4dOuiee+7RpEmTlJSUZFt1ysrK0uOPP66bb75ZDzzwgL7//ntJ0v79+7V48WK9+OKL5Vrv1RCcAAAAgGri2ecm6M7bIxXR6/YSfYeOHFTOiZ/Ut3c/W5urq6vCuodr6/avJUnB7Tpo1+5Mnc09o127M5WXl6fAVjfpq61btPvbXXr8kehyr3nSC8+oXZdARQ7rq7eWLlJxcbGtb8uWLYqIiJCrq6utLTIyUseOHdPBgwclSZ06dVJ6eroKCwu1YcMGdezYUZIUHR2t2bNny9PTs9xrLg3BCQAAAKgGVq1eoW++26XJE18otf/EiRxJko+Pr127j4+Pck78JEm6PeJO/XH4/YocdrvGTXha8xMXqK57PU2cEqc5M+cqdeki9ezXTUNGDCjxbNRv8be/TtH/JL+lfy79UMOHjtALL07R3OSXbf3Z2dny8/Ozm3PlPDs7W5L0xhtvaMWKFWrdurVcXFwUHx+vJUuWqG7dugoNDVVkZKTatGmjKVOm3HC9ZWFXPQAAAKCKO3rsv5qS8KzeX7JKbm5uZY51cnKyO7darXZtz4yP1zPj423nc16ZpT7hfeXsXEevzJ+jjE+2KH3DOo2Ne1LpazaVuP5/jx5R7/7dbed/iYlTbMyEUmuJG/uM7d87BF9eKXp53my9lDi9zHp/2R4cHKyNGzfa+k+dOqWpU6dq06ZNGjt2rMLDw7Vy5UqFhoaqe/fuGjp06FX+ZG4MwQkAAACo4nbt3qmTJ0+o/9AIW1tRUZG2fP1vLV6yUEd+OGFbacrJ+Ul+vk1s406ePCmfxr4lrilJ+378QWkfvq8NH2/W8veXKqx7TzVu1FjDhtyt2IkxOnfOIk9PL7s5Tfya6rO1m23n9es3uOb30a1LqM6ds+inn36Sn5+fmjRpYltZuiIn5/LK2a9Xoq4YP368YmNj1bx5c2VkZGjGjBmqV6+eBg8erIyMDIITAAAAUFP1CY9Qxidb7Npin3labVrfrDHRsapdu7ZaBrSSr4+fNn7xuW7t0EmSlJ+fry1f/VvPPTu1xDWtVqsmTPqLpk5+UfXqeaioqEgFBYWSpMKCAkmyex7pCmdnZwW2av2b3sfu776Rm6ub6tevL0kKCwvTpEmTlJ+fLxcXF0nS+vXr5e/vr1atWpWYv2HDBu3Zs0epqamS9L81X671yj8rCs84AQAAAFWch4en2gW1tzvqutdTg/oN1S6ovaTLt7Y98ehTejU5SWvXfaSsvd9r3ISn5O7urnv+cG+Ja779TqoaN2qsgf0HSZJuC+mhL7Zs0rYdW/WPRa8rqO0t8v7Vzn3X45NP/6W330lV1t7vdfDQfi199y3NSpyukQ+Msm0GERUVJVdXV40aNUrffvutVq1apZkzZyouLq7ELXwXL15UTEyMFi5cqFq1LseY8PBwJScna9euXUpLS1N4ePhvrteEFScAAABAUs4jRxxdwg0bEx2rvLw8/e25vyo396y6dg7Re2+vkoeH/c5zOSdyNC85SWtWrre1de3cTU+NHqORj96rxo18NO/llBuqpY5zHaW+/YZemDFZxcXFatmilSaOn6RHH3rcNsbb21vp6emKiYlRSEiIGjRooLi4OMXFxZW4XkJCgoYMGaLOnTvb2ubNm6eoqCj16dNHUVFRGjFixA3VXBYn6y+/lrcGsFgs8vb2Vm5urry8vMwTKkFy9GeOLgGo0mJS+pkHVQN81gEzPu+oaG7etXTrUG81axqgOs4uji6nxvJtWXk/h+fl5enAgQMKDAwssbHG9WQDbtUDAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA2dHFwAAAABUBXdkhFfaa23o++9Key2UD1acAAAAgGog9e031HdgT7Xu0FytOzTXoLvv1IbP0+3GWK1WzXllljreFqSWQX66+/7B2vNDlt2Y56dPUlCnluraM1irVq+w6/twzUqNfOz+cq/99JnT6tyjnfxaeSs396xd3+7duxURESF3d3c1a9ZMCQkJslqttv7MzEx16dJFHh4eGjZsmM6cOWPrKywsVNeuXbV169Zyr/nXCE4AAABANdC0aTNN+dtUrV+dofWrM9SrZx89/MQDdsHotZS5SlmUrFkJc7Ru9efy8fHVfSOH6/z5c5KkTz79l1Z++E+99/YqTfnbNMU+E6PTZ05LknJzz2pW4nS9lJBY7rWPnzhG7W8JLtFusVjUv39/+fv7a+vWrZo/f74SExOVlJRkGzN69Gj169dPO3bs0NmzZzVz5kxbX2Jionr16qXQ0NByr/nXCE4AAABANRB551268/YBan1TG7W+qY0mPfO86tWtp+2Zl1dbrFarFi5eoNiYv2rwwGFqF9Re819O0cWLF7Xyw39Kkvb9uFc9e/RS545ddc8f/igPT08dOnxAkpTw0vMaNXK0mjcLKNe6U99+QxZLrp56YmyJvmXLlikvL0+pqanq0KGD7rnnHk2aNElJSUm2VaesrCw9/vjjuvnmm/XAAw/o+++/lyTt379fixcv1osvvliu9V4NwQkAAACoZoqKirRq9Qr9fPFnhXS9TZJ06MhB5Zz4SX1797ONc3V1VVj3cG3d/rUkKbhdB+3anamzuWe0a3em8vLyFNjqJn21dYt2f7tLjz8SXa517t23Ry/Pm635SSmq5VQyemzZskURERFydXW1tUVGRurYsWM6ePCgJKlTp05KT09XYWGhNmzYoI4dO0qSoqOjNXv2bHl6epZrzVdDcAIAAACqie/3fKfA9v4KuNlHEyfH6c1/LFNQ21skSSdO5EiSfHx87eb4+Pgo58RPkqTbI+7UH4ffr8hht2vchKc1P3GB6rrX08QpcZozc65Sly5Sz37dNGTEgBLPRl2vS5cuKXrsY3ph0vSrrmJlZ2fLz8/Pru3KeXZ2tiTpjTfe0IoVK9S6dWu5uLgoPj5eS5YsUd26dRUaGqrIyEi1adNGU6ZMuaF6TdhVDwAAAKgm2tzUVp+t3axcS67W/Gu1xv01WqveW2sLT5Lk5ORkN8dqtdq1PTM+Xs+Mj7edz3lllvqE95Wzcx29Mn+OMj7ZovQN6zQ27kmlr9lUoob/Hj2i3v27287/EhOn2JgJJca9OHua2ra5WX+8u+zNJkqr95ftwcHB2rhxo63/1KlTmjp1qjZt2qSxY8cqPDxcK1euVGhoqLp3766hQ4eW+Xq/FcEJAAAAqCZcXFwU2Kq1JKlzx67a+c0O/c/iBUqc9aptpSkn5yf5+TaxzTl58qR8GvuWer19P/6gtA/f14aPN2v5+0sV1r2nGjdqrGFD7lbsxBidO2eRp6eX3Zwmfk312drNtvP69RuUeu0vvtykrL3fyb/1h5L+LxC163qTJk+erGnTpqlJkya2laUrcnIur5z9eiXqivHjxys2NlbNmzdXRkaGZsyYoXr16mnw4MHKyMggOAEAAACwZ7ValZ+fL0lqGdBKvj5+2vjF57q1QydJUn5+vrZ89W899+zUUudOmPQXTZ38ourV81BRUZEKCgolSYUFBZKk4uLiEvOcnZ1t4a0si1OW6GJenu18564dip0Yow/fX6fQXpefUwoLC9OkSZOUn58vFxcXSdL69evl7++vVq1albjmhg0btGfPHqWmpkrS/9Z8udYr/6woPOMEAAAAVAMvzp6m/3z9pQ4fOaTv93ynmXMS9OV/vtCI4fdKunxr2xOPPqVXk5O0dt1Hytr7vcZNeEru7u665w/3lrje2++kqnGjxhrYf5Ak6baQHvpiyyZt27FV/1j0uoLa3iJv7/q/ud5WLW9Su6D2tqNFQEtJ0s1tbpav7+UVsKioKLm6umrUqFH69ttvtWrVKs2cOVNxcXElbuG7ePGiYmJitHDhQtWqdTnGhIeHKzk5Wbt27VJaWprCwyvuS4xZcQIAAAAkbej7b0eXUKYTJ3M0ZvyT+ulEtjw9vdT+lmC9+1aaIn6xi96Y6Fjl5eXpb8/9Vbm5Z9W1c4jee3uVPDzsd57LOZGjeclJWrNyva2ta+duemr0GI189F41buSjeS+nVPh78vb2Vnp6umJiYhQSEqIGDRooLi5OcXFxJcYmJCRoyJAh6ty5s61t3rx5ioqKUp8+fRQVFaURI0ZUWK1O1l9+LW8NYLFY5O3trdzcXHl5eZknVILk6M8cXQJQpcWk9DMPqgb4rANmfN5R0dy8a+nWod5q1jRAdZxdHF1OjeXbsvJ+Ds/Ly9OBAwcUGBgoNzc3u77ryQbcqgcAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGzo4uAAAAAKgKTkV2r7TXavTJV5X2WigfrDgBAAAA1cCryS8rclhf3RTcTO27tdbDj0fpx/+3z26M1WrVnFdmqeNtQWoZ5Ke77x+sPT9k2Y15fvokBXVqqa49g7Vq9Qq7vg/XrNTIx+4vl3pPnzmtPz10jzreFqSAm33UJay94p+foHPnLHbjdu/erYiICLm7u6tZs2ZKSEiQ1Wq19WdmZqpLly7y8PDQsGHDdObMGVtfYWGhunbtqq1bt5ZLzWUhOAEAAADVwJav/q1H/vy41q76VP98+wMVFhXq/ofu1oWfL9jGvJYyVymLkjUrYY7Wrf5cPj6+um/kcJ0/f06S9Mmn/9LKD/+p995epSl/m6bYZ2J0+sxpSVJu7lnNSpyulxISy6XeWrWcNLD/IC154x19+dl2vZr4ujZ9kaFnJo+3jbFYLOrfv7/8/f21detWzZ8/X4mJiUpKSrKNGT16tPr166cdO3bo7Nmzmjlzpq0vMTFRvXr1UmhoaLnUXBZu1QMAAACqgXeXrLQ7f3XO6wru1lrf7N6psO7hslqtWrh4gWJj/qrBA4dJkua/nKIOIW218sN/6qEHH9W+H/eqZ49e6tyxqzp37Krnpj+rQ4cPqGGDhkp46XmNGjlazZsFlEu99b0baNSfR9vOA5q30Kg/j9brC+fZ2pYtW6a8vDylpqbK1dVVHTp00A8//KCkpCTFxcXJyclJWVlZWrZsmW6++WY98MADWrNmjSRp//79Wrx4sbZv314u9Zqw4gQAAABUQ+fO5UqS6tdvIEk6dOSgck78pL69+9nGuLq6Kqx7uLZu/1qSFNyug3btztTZ3DPatTtTeXl5Cmx1k77aukW7v92lxx+JrrB6s386rrXrPlJY93Bb25YtWxQRESFXV1dbW2RkpI4dO6aDBw9Kkjp16qT09HQVFhZqw4YN6tixoyQpOjpas2fPlqenZ4XV/EsEJwAAAKCasVqten7GZHUPDVO7oPaSpBMnciRJPj6+dmN9fHyUc+InSdLtEXfqj8PvV+Sw2zVuwtOan7hAdd3raeKUOM2ZOVepSxepZ79uGjJiQIlno36rJ8c+qla3NFGn7rfIw9NTSS/Nt/VlZ2fLz8/PbvyV8+zsbEnSG2+8oRUrVqh169ZycXFRfHy8lixZorp16yo0NFSRkZFq06aNpkyZUi71Xg3BCQAAAKhm4p+foKys75Qyb1GJPicnJ7tzq9Vq1/bM+Hh9tXGnNn6yRYMGDtWryS+rT3hfOTvX0Svz52j1Pz/Rg/c/pLFxT5b62v89ekSB7f1tx9zksp+Jmv7cLKWv2aTUhct16NABvTBjkrHeX7YHBwdr48aNOnTokJYvX66CggJNnTpVr732msaOHavw8HDt2rVLK1eu1EcffVRmLTeCZ5wAAACAaiT+hWf0yaf/0gfvr5V/02a29isrTTk5P8nPt4mt/eTJk/Jp7FviOpK078cflPbh+9rw8WYtf3+pwrr3VONGjTVsyN2KnRijc+cs8vT0spvTxK+pPlu72XZ+5VbBq/H19ZOvr5/atrlZDRs01LB7B2rm7Olq2rSpmjRpYltZuiIn5/LK2a9Xoq4YP368YmNj1bx5c2VkZGjGjBmqV6+eBg8erIyMDA0dOrTMen4rVpwAAACAasBqtSr++Qlau+4jpS3/SC0DWtn1twxoJV8fP2384nNbW35+vrZ89W+Fdrut1OtNmPQXTZ38ourV81BRUZEKCgolSYUFBZKk4uLiEvOcnZ0V2Kq17WhQv+F1vQdJunTpkiQpLCxMmzZtUn5+vm3M+vXr5e/vr1atWpWYv2HDBu3Zs0djxoyRpP+t+XKtBQUFKioquuZarhfBCQAAAKgGnn3ur1qx6n0tePUNedTzUE7OT8rJ+UkX8y5Kunxr2xOPPqVXk5O0dt1Hytr7vcZNeEru7u665w/3lrje2++kqnGjxhrYf5Ak6baQHvpiyyZt27FV/1j0uoLa3iJv7/q/ud5PP1+vd95fqqy93+vwkUP69PP1mjglTreF9LCFoqioKLm6umrUqFH69ttvtWrVKs2cOdO2o94vXbx4UTExMVq4cKFq1bocY8LDw5WcnKxdu3YpLS1N4eHhvy6j3HCrHgAAACCp0SdfObqEMqUuvfw8091/GmzX/uqc1/Wnex+UJI2JjlVeXp7+9txflZt7Vl07h+i9t1fJw8N+57mcEzmal5ykNSvX29q6du6mp0aP0chH71XjRj6a93LKDdXr5uqmpe++peenT1J+/iX5+zfToMihGvfU/32Pk7e3t9LT0xUTE6OQkBA1aNBAcXFxiouLK3G9hIQEDRkyRJ07d7a1zZs3T1FRUerTp4+ioqI0YsSIG6q5LE7WX34tbw1gsVjk7e2t3NxceXl5mSdUguTozxxdAlClxaT0Mw+qBvisA2Z83lHR3Lxr6dah3mrWNEB1nF0cXU6N5duy8n4Oz8vL04EDBxQYGCg3Nze7vuvJBtyqBwAAAAAGBCcAAAAAMCA4AQAAAICBQ4PTrFmzFBoaKk9PT/n6+mr48OHau3dvmXMyMjLk5ORU4tizZ08lVQ0AAACgpnFocNq4caNiYmL0n//8R+np6SosLNSAAQN04cIF49y9e/fq+PHjtqNt27aVUDEAAACAmsih25GvW7fO7vzNN9+Ur6+vtm/frj59+pQ519fXV/Xr16/A6gAAAADgsir1jFNubq4kqWFD87cPd+nSRU2bNtUdd9yhzz///KrjLl26JIvFYncAAAAAwPWoMsHJarUqLi5OvXr1UocOHa46rmnTplq4cKHS0tK0cuVKBQUF6Y477tCmTZtKHT9r1ix5e3vbjoCAgIp6CwAAAAB+pxx6q94vjRkzRt98842++OKLMscFBQUpKCjIdh4WFqYjR44oMTGx1Nv74uPj7b552GKxEJ4AAAAAXJcqEZzGjh2r1atXa9OmTWrevPl1z+/Ro4eWLl1aap+rq6tcXV1vtEQAAAD8zv1z1rZKe61740Mq7bVQPhx6q57VatWYMWO0cuVKffbZZwoMDPxN18nMzFTTpk3LuToAAACg6tjy1b818rH71fG2IPm18tbaT9aUGGO1WjXnlVnqeFuQWgb56e77B2vPD1l2Y56fPklBnVqqa89grVq9wq7vwzUrNfKx+8ul3u++360nxz6qLmHt1TLIT73uCNXCxQtKjNu9e7ciIiLk7u6uZs2aKSEhQVar1dafmZmpLl26yMPDQ8OGDdOZM2dsfYWFheratau2bt1aLjWXxaHBKSYmRkuXLtXy5cvl6emp7OxsZWdn6+LFi7Yx8fHxeuihh2znc+fO1QcffKB9+/bpu+++U3x8vNLS0jRmzBhHvAUAAACgUvz8888KbtdBsxLmXHXMaylzlbIoWbMS5mjd6s/l4+Or+0YO1/nz5yRJn3z6L6388J967+1VmvK3aYp9Jkanz5yWJOXmntWsxOl6KSGxXOrd9e1ONWrUWMmvLNTG9P8odswEzZw9TYveWmgbY7FY1L9/f/n7+2vr1q2aP3++EhMTlZSUZBszevRo9evXTzt27NDZs2c1c+ZMW19iYqJ69eql0NDQcqm5LA69VW/BgsuJs2/fvnbtb775pkaNGiVJOn78uA4fPmzry8/P14QJE3T06FG5u7srODhYH3/8sQYNGlRZZQMAAACV7o7b++uO2/tftd9qtWrh4gWKjfmrBg8cJkma/3KKOoS01coP/6mHHnxU+37cq549eqlzx67q3LGrnpv+rA4dPqCGDRoq4aXnNWrkaDVvVj77AUTd92e781YtArVtx9f6eN1qxT8/QZK0bNky5eXlKTU1Va6ururQoYN++OEHJSUlKS4uTk5OTsrKytKyZct0880364EHHtCaNZdX2vbv36/Fixdr+/bt5VKvicNv1SvtuBKaJCk1NVUZGRm284kTJ+rHH3/UxYsXdfr0aW3evJnQBAAAgBrv0JGDyjnxk/r27mdrc3V1VVj3cG3d/rUkKbhdB+3anamzuWe0a3em8vLyFNjqJn21dYt2f7tLjz8SXaE1Ws5Z1KB+A9v5li1bFBERYbcnQWRkpI4dO6aDBw9Kkjp16qT09HQVFhZqw4YN6tixoyQpOjpas2fPlqenZ4XWfEWV2Y4cAAAAwG934kSOJMnHx9eu3cfHRzknfpIk3R5xp/44/H5FDrtd4yY8rfmJC1TXvZ4mTonTnJlzlbp0kXr266YhIwaUeDbqRm3d/rVWf7xKD0U9YmvLzs6Wn5+f3bgr59nZ2ZKkN954QytWrFDr1q3l4uKi+Ph4LVmyRHXr1lVoaKgiIyPVpk0bTZkypVzr/bUqsaseAAAAgPLh5ORkd261Wu3anhkfr2fGx9vO57wyS33C+8rZuY5emT9HGZ9sUfqGdRob96TS15T8rtT/Hj2i3v27287/EhOn2JgJZda054csPfzEA4ob9zdF/GJF7Gr1/rI9ODhYGzdutPWfOnVKU6dO1aZNmzR27FiFh4dr5cqVCg0NVffu3TV06NAya/mtCE4AAADA78CVlaacnJ/k59vE1n7y5En5NPYtdc6+H39Q2ofva8PHm7X8/aUK695TjRs11rAhdyt2YozOnbPI09PLbk4Tv6b6bO1m23n9X9x6V5q9+/ZoRNRQjfzTw4ob+4z9tZo0sa0sXZGTc3nl7NcrUVeMHz9esbGxat68uTIyMjRjxgzVq1dPgwcPVkZGRoUFJ27VAwAAAH4HWga0kq+PnzZ+8bmtLT8/X1u++rdCu91WYrzVatWESX/R1Mkvql49DxUVFamgoFCSVFhQIEkqLi4uMc/Z2VmBrVrbjgb1G161pj0/ZOmeB4bo/hEPaNIzz5foDwsL06ZNm5Sfn29rW79+vfz9/dWqVasS4zds2KA9e/bYdtS+XPPlWgsKClRUVHTVWm4UwQkAAACoBi5cOK9vv/tG3373jSTp8JFD+va7b/Tfo0ckXb617YlHn9KryUlau+4jZe39XuMmPCV3d3fd84d7S1zv7XdS1bhRYw3sf3mjtdtCeuiLLZu0bcdW/WPR6wpqe4u8vev/5nqvhKaIXrcr+rExysn5STk5P+nkqZO2MVFRUXJ1ddWoUaP07bffatWqVZo5c6ZtR71funjxomJiYrRw4ULVqnU5xoSHhys5OVm7du1SWlqawsPDf3O9JtyqBwAAAEi6Nz7E0SWUaec3mbrngSG28xdmTJIk3T8iSvNevvw1P2OiY5WXl6e/PfdX5eaeVdfOIXrv7VXy8LDfeS7nRI7mJSdpzcr1traunbvpqdFjNPLRe9W4kY/mvZxyQ/V+9PEHOnXqpNI+eF9pH7xvaw9o1kKH/3tIkuTt7a309HTFxMQoJCREDRo0UFxcnOLi4kpcLyEhQUOGDFHnzp1tbfPmzVNUVJT69OmjqKgojRgx4oZqLouT9Zdfy1sDWCwWeXt7Kzc3V15eXuYJlSA5+jNHlwBUaTEp/cyDqgE+64AZn3dUNDfvWrp1qLeaNQ1QHWcXR5dTY/m2rLyfw/Py8nTgwAEFBgbKzc3Nru96sgG36gEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAGoUqySratT+aDVaee2FR3ACAABAjVHwc7GKC4tVUHjJ0aWgklz5ct3atWvf0HX4HicAAADUGEUFUvbePNVxPSk1lOo4u8pJTuaJKFd5eXmV8jrFxcU6ceKE6tatK2fnG4s+BCcAAADUKMcyL682FQQVqZZzLWKTA1jy3cyDykmtWrXUokULOTnd2N80wQkAAAA1zrHMS8r+9pJc6vLkiiM8OK1dpb2Wi4uLatW68b9nghMAAABqpOICKS+32NFl1EhubpW34lReiNgAAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYODU6zZs1SaGioPD095evrq+HDh2vv3r3GeRs3blS3bt3k5uamm266SSkpKZVQLQAAAICayqHBaePGjYqJidF//vMfpaenq7CwUAMGDNCFCxeuOufAgQMaNGiQevfurczMTE2aNEnjxo1TWlpaJVYOAAAAoCZxduSLr1u3zu78zTfflK+vr7Zv364+ffqUOiclJUUtWrTQ3LlzJUnt2rXTtm3blJiYqBEjRlR0yQAAAABqoCr1jFNubq4kqWHDhlcds2XLFg0YMMCuLTIyUtu2bVNBQUGJ8ZcuXZLFYrE7AAAAAOB6VJngZLVaFRcXp169eqlDhw5XHZednS0/Pz+7Nj8/PxUWFurkyZMlxs+aNUve3t62IyAgoNxrBwAAAPD7VmWC05gxY/TNN9/onXfeMY51cnKyO7daraW2S1J8fLxyc3Ntx5EjR8qnYAAAAAA1hkOfcbpi7NixWr16tTZt2qTmzZuXObZJkybKzs62a8vJyZGzs7MaNWpUYryrq6tcXV3LtV4AAAAANYtDV5ysVqvGjBmjlStX6rPPPlNgYKBxTlhYmNLT0+3a1q9fr5CQENWpU6eiSgUAAABQgzk0OMXExGjp0qVavny5PD09lZ2drezsbF28eNE2Jj4+Xg899JDtPDo6WocOHVJcXJyysrK0ePFiLVq0SBMmTHDEWwAAAABQAzg0OC1YsEC5ubnq27evmjZtajvee+8925jjx4/r8OHDtvPAwECtXbtWGRkZ6ty5s6ZPn6558+axFTkAAACACuPQZ5yubOpQltTU1BJtERER2rFjRwVUBAAAAAAlVZld9QAAAACgqiI4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAICB8/UMLiwsVHFx8TWPr1Wrlpydr+slAAAAAKDKua5Uc9ttt6l+/fqyWq1ljnNycpLVatWFCxf09ddf31CBAAAAAOBo1xWcrFarPvvss2seHxoaet0FAQAAAEBVc13PODk5OV3Xxa93PAAAAABURWwOAQAAAAAGBCcAAAAAMCA4AQAAAIDBdW0O0ahRI/Xs2fOaxzdu3Pi6CwIAAACAqua6glNISIgOHjx4zePbtGlzvfUAAAAAQJVzXcHpk08+0QcffGD8Hqcr7r33Xk2fPv03FQYAAAAAVcV1f49TixYtrms8AAAAAFR3fI8TAAAAABiwqx4AAAAAGDg0OG3atElDhw6Vv7+/nJyc9MEHH5Q5PiMjQ05OTiWOPXv2VE7BAAAAAGqk637GKSEh4ZrHmly4cEGdOnXSI488ohEjRlxzHXv37pWXl5ft3MfH55rnAgAAAMD1uq7g9Prrr8tisVzz+MjIyDL777rrLt11113XU4IkydfXV/Xr17/ueQAAAADwW1xXcAoLC6uoOq5Lly5dlJeXp/bt22vKlCm6/fbbrzr20qVLunTpku38eoIfAAAAAEjVbHOIpk2bauHChUpLS9PKlSsVFBSkO+64Q5s2bbrqnFmzZsnb29t2BAQEVGLFAAAAAH4PrmvFydGCgoIUFBRkOw8LC9ORI0eUmJioPn36lDonPj5ecXFxtnOLxUJ4AgAAAHBdqtWKU2l69Oihffv2XbXf1dVVXl5edgcAAAAAXI9qH5wyMzPVtGlTR5cBAAAA4HfMobfqnT9/Xj/++KPt/MCBA9q5c6caNmyoFi1aKD4+XkePHtWSJUskSXPnzlWrVq0UHBys/Px8LV26VGlpaUpLS3PUWwAAAABQAzg0OG3bts1uR7wrzyI9/PDDSk1N1fHjx3X48GFbf35+viZMmKCjR4/K3d1dwcHB+vjjjzVo0KBKrx0AAABAzeHQ4NS3b98yvyg3NTXV7nzixImaOHFiBVcFAAAAAPaq/TNOAAAAAFDRCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGDg1OmzZt0tChQ+Xv7y8nJyd98MEHxjkbN25Ut27d5ObmpptuukkpKSkVXygAAACAGs2hwenChQvq1KmTXnvttWsaf+DAAQ0aNEi9e/dWZmamJk2apHHjxiktLa2CKwUAAABQkzk78sXvuusu3XXXXdc8PiUlRS1atNDcuXMlSe3atdO2bduUmJioESNGVFCVAAAAAGq6avWM05YtWzRgwAC7tsjISG3btk0FBQWlzrl06ZIsFovdAQAAAADXo1oFp+zsbPn5+dm1+fn5qbCwUCdPnix1zqxZs+Tt7W07AgICKqNUAAAAAL8j1So4SZKTk5PdudVqLbX9ivj4eOXm5tqOI0eOVHiNAAAAAH5fHPqM0/Vq0qSJsrOz7dpycnLk7OysRo0alTrH1dVVrq6ulVEeAAAAgN+parXiFBYWpvT0dLu29evXKyQkRHXq1HFQVQAAAAB+7xwanM6fP6+dO3dq586dki5vN75z504dPnxY0uXb7B566CHb+OjoaB06dEhxcXHKysrS4sWLtWjRIk2YMMER5QMAAACoIRx6q962bdt0++23287j4uIkSQ8//LBSU1N1/PhxW4iSpMDAQK1du1bjx49XcnKy/P39NW/ePLYiBwAAAFChHBqc+vbta9vcoTSpqakl2iIiIrRjx44KrAoAAAAA7FWrZ5wAAAAAwBEITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYOD06vv/66AgMD5ebmpm7dumnz5s1XHZuRkSEnJ6cSx549eyqxYgAAAAA1jUOD03vvvafY2FhNnjxZmZmZ6t27t+666y4dPny4zHl79+7V8ePHbUfbtm0rqWIAAAAANZFDg1NSUpIee+wxjR49Wu3atdPcuXMVEBCgBQsWlDnP19dXTZo0sR21a9eupIoBAAAA1EQOC075+fnavn27BgwYYNc+YMAAffnll2XO7dKli5o2bao77rhDn3/+eZljL126JIvFYncAAAAAwPVwWHA6efKkioqK5OfnZ9fu5+en7OzsUuc0bdpUCxcuVFpamlauXKmgoCDdcccd2rRp01VfZ9asWfL29rYdAQEB5fo+AAAAAPz+OTu6ACcnJ7tzq9Vaou2KoKAgBQUF2c7DwsJ05MgRJSYmqk+fPqXOiY+PV1xcnO3cYrEQngAAAABcF4etODVu3Fi1a9cusbqUk5NTYhWqLD169NC+ffuu2u/q6iovLy+7AwAAAACuh8OCk4uLi7p166b09HS79vT0dPXs2fOar5OZmammTZuWd3kAAAAAYOPQW/Xi4uL05z//WSEhIQoLC9PChQt1+PBhRUdHS7p8m93Ro0e1ZMkSSdLcuXPVqlUrBQcHKz8/X0uXLlVaWprS0tIc+TYAAAAA/M45NDjdf//9OnXqlBISEnT8+HF16NBBa9euVcuWLSVJx48ft/tOp/z8fE2YMEFHjx6Vu7u7goOD9fHHH2vQoEGOegsAAAAAagCHbw7x9NNP6+mnny61LzU11e584sSJmjhxYiVUBQAAAAD/x6FfgAsAAAAA1QHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADAgOAEAAAAAAYEJwAAAAAwIDgBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgQHACAAAAAAOCEwAAAAAYEJwAAAAAwIDgBAAAAAAGDg9Or7/+ugIDA+Xm5qZu3bpp8+bNZY7fuHGjunXrJjc3N910001KSUmppEoBAAAA1FQODU7vvfeeYmNjNXnyZGVmZqp379666667dPjw4VLHHzhwQIMGDVLv3r2VmZmpSZMmady4cUpLS6vkygEAAADUJA4NTklJSXrsscc0evRotWvXTnPnzlVAQIAWLFhQ6viUlBS1aNFCc+fOVbt27TR69Gg9+uijSkxMrOTKAQAAANQkzo564fz8fG3fvl3PPvusXfuAAQP05Zdfljpny5YtGjBggF1bZGSkFi1apIKCAtWpU6fEnEuXLunSpUu289zcXEmSxWK50bdQbi7mX3B0CUCVVpU+rzeCzzpgxucdqBmqymf9Sh1Wq9U41mHB6eTJkyoqKpKfn59du5+fn7Kzs0udk52dXer4wsJCnTx5Uk2bNi0xZ9asWZo2bVqJ9oCAgBuoHkBleuZNR1cAoLLweQdqhqr2WT937py8vb3LHOOw4HSFk5OT3bnVai3RZhpfWvsV8fHxiouLs50XFxfr9OnTatSoUZmvg5rJYrEoICBAR44ckZeXl6PLAVCB+LwDNQefd1yN1WrVuXPn5O/vbxzrsODUuHFj1a5du8TqUk5OTolVpSuaNGlS6nhnZ2c1atSo1Dmurq5ydXW1a6tfv/5vLxw1gpeXF//HCtQQfN6BmoPPO0pjWmm6wmGbQ7i4uKhbt25KT0+3a09PT1fPnj1LnRMWFlZi/Pr16xUSElLq800AAAAAUB4cuqteXFyc3njjDS1evFhZWVkaP368Dh8+rOjoaEmXb7N76KGHbOOjo6N16NAhxcXFKSsrS4sXL9aiRYs0YcIER70FAAAAADWAQ59xuv/++3Xq1CklJCTo+PHj6tChg9auXauWLVtKko4fP273nU6BgYFau3atxo8fr+TkZPn7+2vevHkaMWKEo94CfmdcXV31wgsvlLi9E8DvD593oObg847y4GS9lr33AAAAAKAGc+itegAAAABQHRCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAgUO3Iwcqw5dffqmnn3661L6BAwdq27ZtOnnyZKn9X3/9tVxcXLRw4UItX75cO3bs0Llz53TmzBnVr1+/AqsG8Fvc6Of9/PnzeuGFF7R+/XodOXJEjRs31vDhwzV9+vRr/mZ5ABWvPP7b/uSTT+rTTz/VsWPH5OHhoZ49e+rvf/+7brnlloosHdUYwQm/exaLRcOHD9fUqVPt2g8ePKhnn31W58+f186dO0vM69u3r4qLiyVJP//8swYOHKiBAwcqPj6+EqoG8Fvc6Of92LFjOnbsmBITE9W+fXsdOnRI0dHROnbsmFasWFE5bwKAUXn8t71bt2568MEH1aJFC50+fVpTp07VgAEDdODAAdWuXbsS3gWqG4ITcA1iY2MlSRkZGQ6tA0DF6tChg9LS0mznrVu31osvvqiRI0eqsLBQzs78ZxP4vXjiiSds/96qVSvNmDFDnTp10sGDB9W6dWsHVoaqimecAAAoQ25urry8vAhNwO/YhQsX9OabbyowMFABAQGOLgdVFMEJAICrOHXqlKZPn64nn3zS0aUAqACvv/66PDw85OHhoXXr1ik9PV0uLi6OLgtVFMEJAIBSWCwWDR48WO3bt9cLL7zg6HIAVIAHH3xQmZmZ2rhxo9q2bav77rtPeXl5ji4LVRT3HQAA8Cvnzp3TwIED5eHhoVWrVqlOnTqOLglABfD29pa3t7fatm2rHj16qEGDBlq1apUeeOABR5eGKogVJwAAfsFisWjAgAFycXHR6tWr5ebm5uiSAFQSq9WqS5cuOboMVFGsOAHXIDs7W9nZ2frxxx8lSbt375anp6datGihhg0bOrg6AOXl3LlzGjBggH7++WctXbpUFotFFotFkuTj48MWxcDvxP79+/Xee+9pwIAB8vHx0dGjR/X3v/9d7u7uGjRokKPLQxVFcAKuQUpKiqZNm2Y779OnjyTpzTff1KhRoxxUFYDytn37dn311VeSpDZt2tj1HThwQK1atXJAVQDKm5ubmzZv3qy5c+fqzJkz8vPzU58+ffTll1/K19fX0eWhiiI4Addg6tSpJb5kD8DvT9++fWW1Wh1dBoAK5u/vr7Vr1zq6DFQzPOMEAAAAAAasOOF3z9vbW2vWrNGaNWtK9EVGRurs2bMKCQkpdW6tWvxuAahO+LwDNQOfdTiCk5V7EgAAAACgTERuAAAAADAgOAEAAACAAcEJAAAAAAwITgAAAABgwK56AIDfrS+//FJPP/10qX0DBw7Utm3bdPLkyVL7v/76a7m4uFRkeQCAaoTgBAD43bJYLBo+fHiJL7A+ePCgnn32WZ0/f147d+4sMa9v374qLi6unCIBANUCt+oBAAAAgAHBCQAAAAAMCE4AAAAAYEBwAgAAAAADghMAAAAAGBCcAAAAAMCA4AQAAAAABgQnAAAAADAgOAEAAACAAcEJAAAAAAycHV0AAAAVxdvbW2vWrNGaNWtK9EVGRurs2bMKCQkpdW6tWvxuEQDwf5ysVqvV0UUAAAAAQFXGr9MAAAAAwIDgBAAAAAAGBCcAAAAAMCA4AQAAAIABwQkAAAAADAhOAAAAAGBAcAIAAAAAA4ITAAAAABgQnAAAAADA4P8DSQCR8R6zSfYAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 主程序\n",
    "if __name__ == \"__main__\":\n",
    "    file_path = input(\"请输入 Excel 文件路径：\")\n",
    "    try:\n",
    "        # 尝试读取文件\n",
    "        df = pd.read_excel(file_path, sheet_name='Sheet', header=None)  # 不自动识别列名\n",
    "        print(\"文件读取成功！\")\n",
    "        print(\"文件内容：\")\n",
    "        print(df.head())  # 打印前5行数据，检查文件内容是否正确\n",
    "    except Exception as e:\n",
    "        print(f\"文件读取失败，请检查文件路径或文件格式。错误信息：{e}\")\n",
    "        exit()\n",
    "\n",
    "    # 计算每个学生每个目标的总成绩\n",
    "    def calculate_target_scores(df):\n",
    "        students = []\n",
    "        result = {}\n",
    "\n",
    "        # 提取所有学生的数据块\n",
    "        current_student = None\n",
    "        for i in range(len(df)):\n",
    "            if isinstance(df.iloc[i, 0], str) and '学生' in df.iloc[i, 0]:\n",
    "                if current_student is not None:\n",
    "                    students.append(current_student)\n",
    "                current_student = {'name': df.iloc[i, 0].strip(), 'data': []}\n",
    "            elif current_student is not None:\n",
    "                current_student['data'].append(df.iloc[i].tolist())\n",
    "\n",
    "        if current_student is not None:\n",
    "            students.append(current_student)\n",
    "\n",
    "        # 计算每个学生的目标成绩\n",
    "        for student in students:\n",
    "            student_name = student['name']\n",
    "            student_data = student['data']\n",
    "            result[student_name] = {}\n",
    "\n",
    "            # 提取百分比权重\n",
    "            # 找到“合计”行\n",
    "            for row in student_data:\n",
    "                if row[0] == '合计':\n",
    "                    percentages = {\n",
    "                        '作业': float(row[2].strip('%')) / 100 if isinstance(row[2], str) else row[2],\n",
    "                        '实验': float(row[3].strip('%')) / 100 if isinstance(row[3], str) else row[3],\n",
    "                        '课堂练习': float(row[4].strip('%')) / 100 if isinstance(row[4], str) else row[4],\n",
    "                        '期中考试': float(row[5].strip('%')) / 100 if isinstance(row[5], str) else row[5],\n",
    "                        '期末成绩': float(row[7].strip('%')) / 100 if isinstance(row[7], str) else row[7],\n",
    "                    }\n",
    "                    break\n",
    "\n",
    "            # 提取所有目标（如目标1、目标2、目标3等）\n",
    "            for row in student_data:\n",
    "                if isinstance(row[1], str) and row[1].startswith('目标'):\n",
    "                    target = row[1]\n",
    "                    # 获取目标对应的成绩比例（同一行的百分比）\n",
    "                    target_percentage = float(row[6].strip('%')) / 100 if isinstance(row[6], str) else row[6]\n",
    "\n",
    "                    # 计算作业、实验、课堂练习、期中考试的成绩\n",
    "                    homework_score = row[2] * percentages['作业'] * target_percentage\n",
    "                    lab_score = row[3] * percentages['实验'] * target_percentage\n",
    "                    practice_score = row[4] * percentages['课堂练习'] * target_percentage\n",
    "                    midterm_score = row[5] * percentages['期中考试'] * target_percentage\n",
    "\n",
    "                    # 计算期末成绩\n",
    "                    final_score = row[7] * percentages['期末成绩']\n",
    "\n",
    "                    # 总成绩\n",
    "                    total_score = homework_score + lab_score + practice_score + midterm_score + final_score\n",
    "                    result[student_name][target] = total_score\n",
    "\n",
    "        return result\n",
    "\n",
    "    # 计算每个目标的平均成绩\n",
    "    def calculate_average_scores(target_scores):\n",
    "        # 获取所有目标名称\n",
    "        targets = set()\n",
    "        for student_scores in target_scores.values():\n",
    "            targets.update(student_scores.keys())\n",
    "        targets = sorted(targets)  # 按字母顺序排序\n",
    "\n",
    "        average_scores = {}\n",
    "        for target in targets:\n",
    "            scores = [v[target] for v in target_scores.values() if target in v and v[target] is not None]\n",
    "            average_scores[target] = sum(scores) / len(scores) if scores else 0\n",
    "\n",
    "        return average_scores\n",
    "\n",
    "    # 绘制散点图和柱状图\n",
    "    def plot_graphs(average_scores):\n",
    "        plt.figure(figsize=(10, 6))\n",
    "\n",
    "        # 绘制散点图\n",
    "        plt.scatter(average_scores.keys(), average_scores.values())\n",
    "        plt.axhline(y=sum(average_scores.values()) / len(average_scores), color='r', linestyle='--', label='平均分')\n",
    "        plt.xlabel('目标')\n",
    "        plt.ylabel('平均成绩')\n",
    "        plt.title('目标平均成绩散点图')\n",
    "        plt.legend()\n",
    "\n",
    "        # 绘制柱状图\n",
    "        plt.figure(figsize=(10, 6))\n",
    "        plt.bar(average_scores.keys(), average_scores.values())\n",
    "        plt.xlabel('目标')\n",
    "        plt.ylabel('平均成绩')\n",
    "        plt.title('目标平均成绩柱状图')\n",
    "\n",
    "        plt.show()\n",
    "\n",
    "    # 计算目标达成度并生成表格和柱状图\n",
    "    def calculate_and_plot_achievement(target_scores):\n",
    "        # 获取所有目标名称\n",
    "        targets = set()\n",
    "        for student_scores in target_scores.values():\n",
    "            targets.update(student_scores.keys())\n",
    "        targets = sorted(targets)  # 按字母顺序排序\n",
    "\n",
    "        achievement_data = {\n",
    "            '目标达成度': ['平均值'] + [f'{i}%以上' for i in range(90, 50, -10)] + ['60%以下'],\n",
    "            **{target: [0] * 6 for target in targets}\n",
    "        }\n",
    "\n",
    "        for student_scores in target_scores.values():\n",
    "            for target, score in student_scores.items():\n",
    "                if score is None:\n",
    "                    continue\n",
    "                achievement_percentage = score / 100 * 100\n",
    "                if achievement_percentage >= 90:\n",
    "                    achievement_data[target][1] += 1\n",
    "                elif 80 <= achievement_percentage < 90:\n",
    "                    achievement_data[target][2] += 1\n",
    "                elif 70 <= achievement_percentage < 80:\n",
    "                    achievement_data[target][3] += 1\n",
    "                elif 60 <= achievement_percentage < 70:\n",
    "                    achievement_data[target][4] += 1\n",
    "                else:\n",
    "                    achievement_data[target][5] += 1\n",
    "\n",
    "        for target in targets:\n",
    "            total_students = sum(achievement_data[target][1:])\n",
    "            if total_students > 0:\n",
    "                achievement_data[target][0] = sum([(i + 1) * achievement_data[target][i + 1] for i in range(5)]) / total_students\n",
    "\n",
    "        df_achievement = pd.DataFrame(achievement_data)\n",
    "        print(\"目标达成度表格：\")\n",
    "        print(df_achievement)\n",
    "\n",
    "        # 绘制达成度比例柱状图\n",
    "        plt.figure(figsize=(10, 6))\n",
    "        bottom = np.zeros(len(targets))\n",
    "        for i in range(1, 6):\n",
    "            plt.bar(targets, [achievement_data[target][i] for target in targets], bottom=bottom, label=f'{(6 - i) * 10}% - {(7 - i) * 10}%')\n",
    "            bottom = [bottom[j] + achievement_data[targets[j]][i] for j in range(len(targets))]\n",
    "        plt.xlabel('目标')\n",
    "        plt.ylabel('人数')\n",
    "        plt.title('目标达成度分布柱状图')\n",
    "        plt.legend()\n",
    "        plt.show()\n",
    "\n",
    "    # 计算目标成绩并生成图表\n",
    "    target_scores = calculate_target_scores(df)\n",
    "    print(\"每个学生的目标成绩：\")\n",
    "    for student, scores in target_scores.items():\n",
    "        print(f\"{student}: {scores}\")\n",
    "\n",
    "    average_scores = calculate_average_scores(target_scores)\n",
    "    print(\"每个目标的平均成绩：\")\n",
    "    print(average_scores)\n",
    "\n",
    "    plot_graphs(average_scores)\n",
    "    calculate_and_plot_achievement(target_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "文件读取成功！\n",
      "文件内容：\n",
      "     0     1    2    3     4     5     6     7\n",
      "0  学生1   NaN  NaN  NaN   NaN   NaN   NaN   NaN\n",
      "1   序号  课程目标   作业   实验  课堂练习  期中考试  成绩比例  期末成绩\n",
      "2    1   目标1   69   64    57    80   0.2    12\n",
      "3    2   目标2   62   76    80    80   0.4    25\n",
      "4    3   目标3   69   52    92    80   0.4    12\n",
      "每个学生的目标成绩：\n",
      "学生1: {'目标1': 35.55, '目标2': 45.9, '目标3': 38.45}\n",
      "学生2: {'目标1': 31.85, '目标2': 49.3, '目标3': 35.05}\n",
      "学生3: {'目标1': 31.85, '目标2': 37.3, '目标3': 42.85}\n",
      "每个目标的平均成绩：\n",
      "{'目标1': 33.08, '目标2': 44.17, '目标3': 38.78}\n"
     ]
    },
    {
     "data": {
      "image/png": "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T/369eXl5aVWrVpp06ZNWrt2rbZv36533nnHbahZRkaG+vTpo27duunWW2/Vli1bJBVOblA0c9zZi5eXlyskFqlRo4bS09O1ceNG1xTmt956qwoKCjRixAjdf//9OnnypPbu3avt27erQYMGJV57eWemO/f5obOlpaVp0aJFevTRR9WqVSvdfPPN+v777+Xj46MmTZqoa9euevnllys0NTgAmICeIgC4xFX0maJTp05p8uTJGj16tCZMmKAHH3xQW7duVUZGhl5++WUdP35cmzZtcrV/6aWXFBsbq19++cX1PNHQoUP1v//9r9gf8kW9RWPHjnV7fseyLOXl5alWrVpKSUkpV50BAQHasmWLPvjgA3377bfq2rWrJPeeoqL3BUVFRSk0NNT1HE5Rb0znzp313//+V0uWLNEDDzzg9hyTVDiT3fr167Vt2zb9/e9/d/XU1KxZUy+88IKmTp2qI0eOqEaNGmrQoIEGDhxYbKa8ou/B2bPrOZ1OPfLII5KkkJAQRUVFKTY2VitWrFDv3r1LvN68vLzzvrQ2LS2tzJe51qpVS4sXL9YNN9ygqVOnavjw4Xrttdc0dOhQvfrqq/r888+VlZVVoanBAcAEhCIAuMSV9z1FRR544AE1bNhQQ4YM0YQJE+Tl5aVFixYpJSVFq1at0ty5c92OHzVqlObNm6fnn39eCxYskKRSX6paNCX3woULXVNyl5fT6VRmZqaCg4MlScnJyXriiSe0ceNGxcTElDh8LikpSTabTVdccYUkuV5GWhTeunXrpj59+uiKK67QsmXLin3miBEj9Oijj6p169a66qqrXL1QZ/cmPfTQQ+rcubPeffddSYU9ZyU5dOiQwsPDJUn333+/276+fftq2rRpKigocL0P6Vx5eXk6cuSIIiIiyvo2lfluIV9fX3377beSCr+fs2fP1ocffqiBAwdq1qxZrmtYv359mZ8BAKZh+BwAXOKKnikqbTn3j+gnn3xSn3/+ebHt7733nurXr6+HH37YbXtYWJimTJmi2NhYfffdd5Vae15enux2uz7//HM1btxYsbGxsixLf//739WqVSvl5+dr586duuuuu1RQUOD2olipcNa5iIgI17UcPXpU0plQVBRuHn30UVdwPLsnpkuXLnrwwQcVFRWl48ePa8WKFUpPT3cFMLvdrr179+qOO+5wq7mihgwZIpvN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jvP391fNmjVd63l5eVq3bp3ef//9837mhg0btHr1as2aNUuS9Nxzz+mqq67SqlWr1L1790q4qvOjpwgAAACAy/vvv6/BgweXur9///6aMGGCpMLhdkVD7Ww2myzLktPp1PLly+VwOHT77bcrMjJSkZGRql+/vrp27ep2LofDodGjR2vkyJFq1KiRJCk4OFivvfaaBg0apP3791fRVbojFAEAAABw6d69uxYvXqxly5YV27d+/Xpt3LhRTz31lCRp48aN8vLy0pNPPql///vf8vb21t///ne99957mjNnjvbt2+dapkyZ4up9KvLuu+/q2LFjrpBVZPjw4frzn/+sW265RT///HPVXez/RygCAFxWHE5LP+1P0bLtR/XT/hQ5nKU/LAwA1er06dKX3Nzytz13koPS2l2gli1baty4cRoxYoTby2cdDodGjBihZ599Vi1atJAkdezYUfn5+fr444911113KT8/X3Xq1NFvv/0mPz8/t2eK8vPz3YbYffXVV5o8ebLmz5+vWrVqudVgs9kUFxen7t27q0OHDpo4caLsdvsFX9P58EwRAOCysXJXkiYv362k9DN/XFwZ7K9JvaLUo82VHqwMACQFBpa+7667pK++OrNev750ViBxc8st0n/+c2a9aVPp5Mni7cqYQe58Ro8erX/9619KTU11bfvxxx91/PhxTZo0ybXNy8vLbepxHx8f1a9fX7Nnz1a7du00ZswYtWvXTv369VN+fr6rp+jw4cN64IEH9MEHHxSboOFsQ4YM0fTp07Vlyxb5+FRddCEUAQAuCyt3JWl47Fad+yfA8fRcDY/dqpmPtScYAUAZnE6n8vLy5O/vrzp16mjz5s2qUaOGa/+f/vQn7dy5U8HBwbLb7crLy1NAQECxdwX96U9/cn29ZMkSZWdna+3atW6hqEmTJtq5c6ciIyP14IMPKicnRw0bNtSRI0dUt25dSdKgQYMUERGhZ599tsqvnVAEALjkOZyWJi/fXSwQSZIlySZp8vLd6hrVUN5elfOiPwCosKys0vd5e7uvnzhRettzXwp76NAFl3S2ffv26frrr5efn5/b9tP/fyhebGysa5vdbldBQYH+7//+zzVBglQ48UJ2drZrOFx8fLzGjh2r6dOnFxs+FxkZKUkKCgrSjh07FBYW5nau3377rdpmnyMUAQAueZsOproNmTuXJSkpPVebDqaqc/O61VcYAJztnOdmPNK2DH/4wx+UmZlZbPu5U3KfKz09XfHx8dq6dauaNm2q6dOn65prrtHIkSOVmpqqdevWqXnz5powYUKxiRaKfPbZZ+rdu7fbtmPHjhWb+ruqEIoAAJe8E5mlB6ILaQcAKJ+4uDj1799fnTt31osvvqh7771XERERGj58uFq0aKF3331Xvr6+kgrfXRRYwnNV3377rT799FPFx8e7bT927JgiIiKq5TouilDUo0cP9evXTwMHDizXdgAAzlb/ipL/5fFC2wEAznA4HKXu69Wrl37++We1bt3abfuMGTNcEzCsW7dOJ0+e1Ndff63nn3/e7bxz5szR2LFjNX/+fDVu3FiStHnzZv3vf/+T3W5XkyZNquCKivP4lNxxcXFatWpVubcDAHCujs1CdGWwv0p7WsimwlnoOjYLqc6yAOCykJOTo9xzpwz//4KCgooFIkluM9J99tlneu6559S2bVs98MADru1DhgzR22+/rS+//FIPPviga/sHH3ygTz75RHPnzi11uF1l82hPUWpqqsaMGaOrr766XNsBACiJt5dNk3pFaXjsVtkktwkXioLSpF5RTLIAABdg3rx5v+v42bNna/bs2cW2v//++/L29nabfEGSPv3009/1eRfCo6FozJgx6tu3r3LOeQFVadsBAChNjzZXauZj7Yu9p6gh7ykCgItSSc8XeYrHQtHatWu1evVq7dq1SyNGjDjv9pLk5eUpLy/PtZ6RkVFl9QIALn492lyprlENtelgqk5k5qr+FYVD5ughAgCUxSOhKDc3V0OHDtXMmTMVFBR03u2leeuttzR58uSqLBUAcInx9rIx7TYAoEI8MtHCa6+9phtuuEF33313ubaXZvz48UpPT3ctiYmJVVEuAAAAUGFOp9PTJVz2LKuk13ZXnM2qrDNVQLNmzZScnCwfn8KOquzsbPn4+KhBgwYlbh84cKA++uij8543IyNDwcHBSk9PL1dPEwAAAFDZnE6nEhIS5O3trXr16snX11c2G8N4K5tlWUpOTlZ2drZatGghb29vt/0VyQYeGT73ww8/yG63u9bHjh2rTp06qV+/fiVu5z1FAAAAuFR4eXmpWbNmSkpK0rFjxzxdzmXNZrMpPDy8WCCqKI+EovDwcLf1wMBAhYaGlro9NDS0OssDAAAAfhdfX181btxYdru9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KTk5WSkpKTp9+rQSEhJUp04d5efnn/ccW7duVd++fT2WjgHgYlQd9+C4uDjFxsZq5cqVCgkJUc+ePTV16lS98cYblXINAHApqo7775o1a7Rq1SodOHBAgYGBevLJJzVt2jR98sknlXINFUFP0Xmc3d1XmqJfms2bN+vtt99WdHS0du3apWnTpmnDhg2lHudwOCRJp0+fVt++ffX0009XTtEAcJmojnvwr7/+qpiYGHXs2FGRkZF66KGHtHnz5sq5AAC4RFXH/TcgIEBz5sxxDdFr166d0tLSKqH6imNK7vPo2bOnNm3apKCgoBL3p6amqnfv3oqJiXFta9OmjTp06KDo6Gj1799f69atk6+vr+x2uxwOh/z8/GS325WVlaWsrCx5eXkpOTlZCQkJGjhwoA4dOlQ9FwcAF7nquAef20Pfr18/1a1bVzNmzKjKSwOAi1p1339PnDihrl27atSoURo4cGAVX11xDJ8rhzfffFODBw8ucd/EiRN15MgR13pCQoJ++eUX5eTkqEuXLtqwYYOrazE2NlYrVqzQwoULi52nUaNGSkhIqJoLAIBLWHXcg4vs3btXX375JT1FAKDqu//OnTtXzz33nG699VaPBCKJ4XOV7oMPPlDz5s110003yW63a8GCBfruu+/cAk9SUpK++eYbD1YJAJen33MPdjgcGjRokAYPHqxrrrmmOssGgEve77n/Pv7441q6dKn27Nmj999/vzrLdiEUlcOECRMUGRlZ4vLRRx+52m3dulWxsbF69tln5eXlpVmzZql3794aOXKkVq1a5Wq3bt06PfTQQzp+/LgnLgcALinVdQ+ePHmy0tPT9c4771TbtQHAxay67r9+fn7q0aOHXnvtNc2fP7/aru9shKJyePPNN7Vv374Sl7MnR5g/f77eeOMNNWzYUJLUuXNnHT58WElJSXriiSdc7fr166frr79eo0aNqvZrAYBLTXXcg5ctW6b3339f//znPxUQEFB9FwcAF7Gqvv9Onz5dcXFxrv0+Pj7y9vaupqtzRyiqRNHR0cVmkPvLX/6iYcOGFfs/2cmTJ2vx4sXat29fdZYIAJetC70H7969W4888og+/PBDhYeHKysrS9nZ2dVZOgBc0i70/tuiRQuNGjVKa9eu1d69ezVt2jQ98MAD1Vm6CxMtnIfD4dBLL72k119/vcT9p06dUq9evSTJlWwLCgrkcDhkt9vVrVs3PfbYY/rqq6+0cuVK1wutbrrpJiUkJKhp06bVch0AcCmqjnvwyJEjlZ2drccff9x13iZNmjATKACjVcf9NzIyUuPGjdMjjzwiu92uwYMH64UXXqieCzwHoeg8vL29NX36dA0YMKDE/RMnTtTevXvdtuXl5Sk/P18+Pj4aPXq0JCkmJkYnT57UtGnTXO3ODUS33nor/ycMAGepjntwdHS0oqOjq6R+ALhUVdffwOPGjdO4ceMq/wIqiPcUAQAAADAazxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYoAgAAAGA0Zp8DAFwSunTpoh07digwMLDE/adOndIdd9yhxYsXu7bNmzdP33zzjRYtWiSn06m8vDz5+/vLZrO52tjtdkmFLw0EAJiJniIAwCXB19dXU6dO1aFDh0pcnn32WdWoUcPtmICAANe7MQ4cOKDg4GDVrVtXoaGhCg0NVZ06dRQQEKDY2FhPXBIA4CLBP4sBAC4JXl7n/3e8olCUlpam5ORkpaSk6PTp00pISFCdOnWUn59f1WUCAC5BhCIAwCXh7CFvpSkKTps3b9Y//vEPrV27VjVq1NC0adPUp08f9ezZs8TjHA6H643sAADz8PJWAMAloWfPntq0aZOCgoJK3J+amqrevXsrJibGta1Nmzbq0KGDoqOj1b9/f61bt06+vr6y2+1yOBzy8/OT3W5XVlaWsrKy5O/vX01XAwC4mNBTBAC4ZLz55psaPHhwifsmTpyoI0eOuNYTEhL0yy+/KCcnR126dNGGDRtcw+tiY2O1YsUKLVy4sFrqBgBc3JhoAQBwWfrggw/UvHlz3XTTTbLb7VqwYIG+++47JSQkuNokJSXpm2++8WCVAICLAT1FAIBLxoQJEzR16tQS9xUNn5OkrVu3KjY2VpMmTdL27ds1a9YstWjRQrfeequGDRum2rVrS5LWrVun4cOHKz4+Xg0bNqyuywAAXGToKQIAXDLefPNN7du3r8Tl6aefdrWbP3++3njjDVfQ6dy5sw4fPqykpCQ98cQTrnb9+vXT9ddfr1GjRlX7tQAALh6EIgDAZSc6OtotJEnSX/7yFw0bNkwBAQFu2ydPnqzFixdr37591VkiAOAiwvA5AMAlweFw6KWXXtLrr79e4v5Tp06pV69ekuSaXrugoEAOh0N2u13dunXTY489pq+++korV650vdT1pptuUkJCgpo2bVot1wEAuPgQigAAlwRvb29Nnz5dAwYMKHH/xIkTtXfvXrdteXl5ys/Pl4+Pj0aPHi1JiomJ0cmTJzVt2jRXOwIRAJiN9xQBAAAAMBrPFAEAAAAwGqEIAAAAgNEIRQAAAACMRigCAAAAYDRCEQAAAACjEYoAAAAAGI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA0f4fpF/k2O4FG0oAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAIfCAYAAAC/5XeQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA6D0lEQVR4nO3de5hVBb3/8c84AwMjggyYHUdKhErxmoqhlnYEzRIM62dxvGeaeM0bhkWWpoiaRp3MWx5RIRXJLkdD7WLYDQtNDEEfkFAxTEAug8AMM+zfHz7s4wQGFDDAer2eZz+Hvdbae3/32OLMm7X3WhWlUqkUAACAgtqmtQcAAABoTaIIAAAoNFEEAAAUmigCAAAKTRQBAACFJooAAIBCE0UAAEChiSIAAKDQRBEAAFBoogigoJYsWZKrrroqr7/+emuPsprm5ubMnj3733qOF154IY8//niS5O9//3uWLVu2xu0aGxszceLEd3ye733ve/nZz3621tf70Y9+lD/96U+rLV+5cmUeeeSRTJ48ea3PsXTp0kyZMiXLly9vsfzKK6/MZZddttbHA/CvEUUAW6jf/OY3qaioWOdbfX19i8cvW7YsX/3qV/PGG2+U7z/33HN56aWXMnv27Ba3v/71r6tFyt/+9rc888wzmTZtWp5//vl3vE2bNi3PPPNMXnvttTW+j65du2b48OEtlk2aNCndunXLhAkT/uWfz0MPPZSBAwcmSc4444x89KMfXWMAPv300znooIPyq1/9Kslbsfjmm29m+fLlWb58ee6///488cQT5ftvvvlm3nzzzdWe56tf/WoefPDB1ZZvs802ufDCC/O1r31trTM/++yz2WuvvTJr1qwWy5944on86U9/yuuvv56LLrooS5cubbH+7rvvXq//Lay6LVmyZK0zARRBVWsPAMC/pl27dkmS5557Lu95z3vecbsxY8Zk8ODBadOmzRofX11dneStIysf/OAH3/F5TjnllIwaNap8f/To0bnyyivTtm3bbLPNW//GViqV8sYbb6Rjx47l11u5cmUaGhpyzTXX5Pzzz1/tedu3b5+ampoWy371q19ljz32yGGHHfaO86zNtttum7Zt2yZJ7rjjjvTt2zeHH354nnrqqfJ7Tt6Kp969e+fwww9Pknzxi1/M2LFjU1lZmSR588038+STT+aWW25JkjQ0NOSss87KjTfe2OL12rVr1+J53+68887LE088kVKplIqKihbrHn744fzHf/xH9ttvv/K8//g87du3T8eOHdO+ffv88Y9/zFFHHZXx48dn2223TZJUVVWlS5cuLcL1xRdfzGOPPZbPfe5z5f/Wq/z+979P375933FegKIRRQBbqFUhUlNTkw4dOrzjdqt+8a2qavlX/qpfzlf93z322CN///vf07lz5xYB1djYmPr6+vLrrXLppZfmoosuSqlUKm+/cOHCdO7cOWPGjEn//v2TvHUE6u9//3t22WWXNc5XWVm52mzjxo1Lly5dMmLEiNW2P+mkk1JXV1eebebMmWt83gULFmTFihV5/vnnkyTXX399fv/732f69OnZc889k7z1Mb3Ro0fnu9/9bpqamrJw4cLccccduemmm1JdXZ2Kior069cvH/7wh/P1r389K1euzIoVK8o/0+bm5jQ0NJRjJnkrmkqlUq6++urMmzevHFddu3bNeeedl5UrV2b58uW59NJLs9tuu+Wxxx7Lgw8+mKeeeqr8M/7HcGrTpk2qqqqy3XbbZfz48enXr1+eeeaZHHLIIUn+77/t2+Pnmmuuyfjx43Psscfm3e9+d3l5u3btyvOumg2g6EQRwBZqfX+hXfWL8/e///3ce++95cefeuqpqayszOWXX77GIzNt27ZNly5d1vicn/zkJ7Pzzjvn1ltvfcfXvfbaa3P99ddnxowZ+Y//+I8kyYoVK/Lss8+mpqYmK1asyN///vc8++yzede73pUFCxbk6aefzqBBgzJlypTy89TX1+enP/1pjjjiiHIU/fWvf83uu++e7bbbbrVoa25uzpIlS9KnT58kbx2xampqyo9//OPy93vuuuuu1NXVpX///hk7dmzOOeecTJo0KZ/61Kcye/bsVFRUZMGCBZk4cWJuueWWrFy5Msccc0y+//3vJ0kef/zxHHHEEeXXfOqpp3LFFVfkzDPPzL777ptOnTqlqqoqjzzySP7617/mrLPOSlNTU5YtW1YOmBtvvDHPP/98TjvttFx11VVJ3jritnTp0rRr1y7bbLNN+eNuSbLddtvld7/7XRobG8uv+49HAR977LGMGTMmSdK9e/fy8o997GN55JFHyvf/8WcGUFSiCGAL9/ZfetfFfvvtl9ra2jz88MNJkpNPPjnbb799Vq5cmZkzZ77jL8orVqxIly5dUltbW142ePDgfPKTn8yee+6Z8847b7XHvPjii7nuuuty7rnnloMoSebPn58DDjigfP+qq67KVVddleuvvz4vvPBC+vbtm3vvvbfFc02bNi0//elPWxwNWTXr008/nZ49e7bY/s9//nP222+/vPzyy+nYsWOamppaHJF68803c8EFF6Suri7/+Z//mWnTpmXAgAGpqanJ448/Xn7uAQMG5KCDDsqXv/zlFvN37tw5H/nIR/Laa69lzpw5+eAHP5ihQ4fm4osvTps2bdKpU6fy9gsXLkxTU1MuuOCC1X5GlZWVuffee/OXv/ylvOyll17Krrvuutq2d911V/nPXbp0ybx585K0PLI0c+bMnHTSSWnfvn2efPLJ7LXXXvnpT3+aU045JTfffPNqzwmAKALY4q3rd4pW2W+//bLffvtl3LhxSZIDDzwwPXv2zJ577pm//vWv5aMOjY2NqaysTGVlZUqlUhobG3PzzTe3eK4BAwbk4osvziWXXJKDDz44PXr0KK9bvnx5jjvuuOy2227lIyCr7LjjjuUjId27d88ll1ySM844IzNmzMhXvvKVPPDAAzn55JNz2WWXZffddy/Pk2SNUdTc3Jympqby8srKyuywww5J3johRMeOHXPzzTfnwQcfzAMPPJCuXbtm2223zSWXXJK6urr85S9/yfPPP58bbrgh3bt3T3Nzc4sjcX/+85/zve99L8lbR3GWL1+eV199NV27ds2OO+6YH//4x0ne+qjiwoULVwu0tamtrc1hhx2WP//5z0mSurq6PPfcc9l2221TWVmZAQMGpL6+Pr/+9a/L7/cfz1C3yuDBg3PIIYekb9++6du3b77yla/kqquuyv3337/eAQ1QFKIIYAu3rt8perulS5fmoYceSpJ86lOfyvHHH5/JkyeXv7ifJD179sywYcNy6qmnJnkrBkql0mrP9fWvfz1PPvnkauuefPLJzJkzJ0888USL79wkbx3ZaN++/WpzTpo0KYceemgGDBiQMWPGZMCAAXn66afTsWPHfxpFu+22W4vneuCBB/KpT30q7dq1y0svvZTddtstd955Zzp16tTio4CXX3555s+fn69//eu5+eab07lz5yxcuHCNP8d/5p577kmSjBo1KjfddFOmT5+e6urq1NfXp23btlm+fHn5O0srVqxIc3Nzi+/5rLLqO1Rt2rTJ+973vvLyv/3tb5k3b146duyYjh07/tNZ7r///tTU1OS1117L9773vVxwwQU56qijyt+jAmB1PkwMUEB33XVXOZZOO+20XHvttXn99dcze/bs1Y5ANDc3Z/r06amoqChHyPPPP59nn302zz//fF555ZXcdttt6dChQ6ZPn54kmT17dnbcccc88sgjaW5uzrRp0zJ58uTykZB3csopp+TnP/95Kioqcuedd6Zdu3Z5+umnUyqVsmLFiiRpEVOrQmnChAmZPn16pk2bliR517velW222Sa77757/vjHP+bxxx/PM888k+uvv77FR80WL16cgQMH5sgjj8xHP/rRPPXUU0mSD3/4w9lmm21SVVXV4rbNNtuUI3GVCRMm5Kmnnsouu+ySgQMHZsWKFbnyyivz6KOPZscdd0yXLl1y3XXX5YknnkjXrl3zrne9Kx/+8IdXe+/XXnttfvrTn662/O9//3tef/31tG/fPr/97W//6c9vwYIFGTt2bE444YTsvvvu+fCHP5wnnngiVVVVee9735sjjjgiX/3qV1t8HwkAUQSwxevevfs/vRbN5z73uRbbL1y4MFdccUUuuuiiJMlnPvOZDBgwIIsXL87ZZ5+dQw89tMX2Q4cOzaGHHlq+nlGSnHnmmenTp89qt379+iVJLrnkkvTp0yeHHXZYed2HPvSh8vp1UVNTk6eeeip/+tOfMmzYsDUeKVp1vaBevXqlZ8+e2XHHHZOk/NG5gw46KL/73e9y0UUX5bjjjmvxPabkrTPZ/fa3v83999+fzp0759Of/nSSt8Lr0ksvTVNTU2bNmpVXX301TU1NOfnkk1t8L2np0qU5++yzc+KJJ6ZLly7Zfvvtc/bZZyd566OFzc3NaW5uzuWXX57DDz88TU1NWblyZZ577rkWc9x33325/PLLc8MNN6z2c/j1r3+durq6DBgwoMVJEtZk2223zbhx4/L+978/zz77bGbOnJlvfOMbOfXUUzNx4sTss88+WbJkyWpH7gCKThQBbOGee+651NfXv+Nt1fV1VjnuuOPy7ne/O1/4wheSvPURtLFjx2bnnXfOo48+mnPPPbfF9hdeeGGWL1+eL37xi+VlEyZMyNKlS7Nw4cIWt5deeinJW7/kv335okWLsnz58syfP/8d38fKlSuzaNGi8v25c+fm//2//5frr78+hxxyyBqjaM6cOamoqMh2222XJOWLka46GcSRRx6ZRx99NC+++GKuv/761V7z/PPPz/33358nn3wyS5cuLV809e1Hkz772c+2eGxzc3P5z1deeWVmzJiRL33pS+VlV111VW688cZUVlau8aQVFRUVLT7SOHr06Jx00km5+uqrc/DBB6+2/X333ZcjjzwyH//4x/PAAw+Uj5itSdu2bfPzn/88w4cPz6677ppbb701e+65Z0499dQ8//zz+eY3v5lvfetb7/h4gKISRQBbuFXfKXqn2z9+p+jzn/987r333tWWf+tb38q73vWu/Nd//VeL5TvttFOuvPLKjB49Or/4xS826OwNDQ1pamrKvffem/e85z0ZPXp0SqVS/ud//ie77757Ghsb8+yzz+YTn/hEVqxY0eJCsclbZ53r1q1b+b28+uqrSf4vilbFzQknnFA+GcXbL3Dat2/ffOYzn0mvXr3y2muv5aGHHsqiRYvKAdbU1JQXXnihxRGuhoaG8p9POOGEXHDBBS1OrLC+p7muqqoqn7DiH82cOTP/+7//mxNPPDHHHXdcGhoa/unpz1cplUrZY489cs4556RXr17585//nEGDBq3XXABFIooAtlBrOunBuhg0aFB23333Fo+fMWNGbrjhhlx44YXls8+9ff0ZZ5yRnj17lr8z9O/67W9/m759+6a2tjbz5s3LDjvskOuuuy6nnHJKrr/++pxxxhm54IIL8sgjj5RPSNDY2NjiKFGSPPHEE9l3330ze/bsXHjhhTnvvPPy3ve+N23atMkvfvGLnHjiiTnwwAMzZsyY8lGsvffeO2PGjMmSJUty2GGH5QMf+EBqamrSo0ePnHXWWamqqsrVV1+dU089NQ888EAaGxtzwAEH5L//+79z4YUX5vLLLy+//l577ZVrrrlmtZ/X+hg0aFDGjRuXioqK1Z5j2LBh6dWrVw4//PC0b98+F154YYYOHVr+7tQqbz96tcpdd92VfffdN1deeWV69epVPhnE261cufJfmhlga+PscwBbqFWnoF7X0yyvWLGixUU+Vx0NaWxsTM+ePfOjH/0ohx12WMaOHZtJkybl5ZdfTufOnZO89ZG1559/fq0XjF31S/baAqFnz56ZO3dubrjhhgwaNCjbb799ed3gwYOz55575hOf+ESLx8ydO7fFSRZmzJiRxx9/PP/zP/+Turq6PPXUU9l5551z9dVX57rrrsuwYcMydOjQXHHFFfnIRz6So48+OldddVUWLFiQ9u3bp0OHDtl1113Tt2/fHHrooTnggAPKZ/Hbb7/9ctddd+XSSy/NZZddlpdffjk33XRTrrvuunz3u99tcba7VUeGGhsbyz/T1157LcuXLy9//2jx4sVpaGgoH6VqampKdXV1+dpNq55j1Ufjmpqa8sMf/jD33ntvi5MvDBkyJKNGjcqRRx6Zn/3sZ9lrr73K269cubLFUbCddtop55xzTs4666z87Gc/y3777VdeP3fu3PLjfL8IIEkJgC3SH/7wh1KnTp1K06ZNK9XX17/j7ZZbbiklKdXX17d4/N/+9rdSktJf/vKXFstvv/320n777VcaOnRoqbGxcb1mmjNnTilJady4cf/2+yuVSqWVK1eWzjjjjNLJJ59cete73lXq06dPed0nPvGJ0i677FJatmxZedmrr75a2nfffUudOnUqjR49urx8+vTppZ122qmUpNS2bdvS/Pnz1/h6Dz/8cOmYY44pdejQodS1a9fS7bffXl63fPny0iWXXFJKUjrzzDNXe+z73//+0sUXX1wqlUqlM844o1RTU1Pq2LFjqVOnTi1uHTt2LG277balk08+ebXn+N3vfldKUrrxxhtL2267bWnQoEGrbfOnP/2pVFNTU+rWrVvpjTfeKJVKpdKYMWNKSdb79uabb67tPwFAIVSUSv/i8X4A+AevvPJK3vOe9+QHP/jBat9N+lcdeeSRef7553PAAQfka1/7WvbZZ58kb51+eubMmdl///1bbH/rrbfm4x//+GoXtJ0/f37uvPPO9OjRI8cee+waX2vevHm5+OKL8/GPfzwDBw5c7eN6SfLggw++42m1/11PPPFEDjvssHz/+9/Pfffdlx/+8IdrvC7R448/nu233z4f/OAHkyR33313LrroosybN2+dXue3v/1tPvKRj2TRokVrve4RQBGIIgDYwi1ZsiQLFixIt27dWnsUgC2SKAIAAArN2ecAAIBCE0UAAEChiSIAAKDQtqrrFK1cuTJ/+9vfst1225WvYg4AABRPqVRKfX19dtppp/L14N7JVhVFf/vb35x5BwAAKHvllVey8847/9Nttqoo2m677ZK89cZddwEAAIpr8eLF6datW7kR/pmtKopWfWSuY8eOoggAAFinr9U40QIAAFBooggAACg0UQQAABSaKAIAAApNFAEA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NYoqKirywQ9+MKNGjcpPfvKT1NbWZu7cuS22qa+vT9u2bdf4+Orq6nTs2LHFDQAAYH20ShT96le/ypAhQ8r3q6re+mrTbrvtlokTJ5aXz5o1Kw0NDamtrd3kMwIAAMXQKlG022675dZbb81tt92WV155JUOHDs2RRx6Zo48+OosWLcrdd9+dJBkxYkT69euXysrK1hgTAAAogFaJop122ikPPPBARo4cmT322CNLly7NPffck6qqqtx2220ZPHhwdtxxx4wbNy4jRoxojREBAICCaJVTcifJxz72sTWebnvgwIGZPn16Jk2alIMPPjg77LBDK0wHAAAURatF0T9TV1eXurq61h4DAAAogFY9+xwAAEBrE0UAAEChiSIAAKDQRBEAAFBooggAACg0UQQAABSaKAIAAApNFAEAAIUmigAAgEITRQAAQKGJIgAAoNBEEQAAUGiiCAAAKDRRBAAAFJooAgAACk0UAQAAhSaKAACAQhNFAABAoYkiAACg0EQRAABQaKIIAAAoNFEEAAAUmigCAAAKTRQBAACFJooAAIBCE0UAAEChiSIAAKDQRBEAAFBooggAACg0UQQAABSaKAIAAApNFAEAAIUmigAAgEITRQAAQKGJIgAAoNDWKYqam5tz8803l++PGjUq48ePX+O2X/3qV/P6669vmOkAAAA2sqp12WibbbbJTTfdlEMOOSQ/+clPUldXl4qKigwcODDt27dPU1NT+vfvn+233z633nprBg8evLHnBgAA2CDWKYoqKirSpk2bLFu2LC+88EI5ip566qlcddVVSZKePXvmpJNOyj333JO6urqNOjQAAMCGsk5R9OKLL2bFihV57bXXsmzZssyfPz91dXXp3LlzjjjiiHTs2DHz5s3Lcccdl4997GMbe2YAAIANZp2+U3TggQdm+vTp+fznP5/x48dn+PDhSZJSqZQf//jHqa2tzamnnpoPfehDG3VYAACADW2domj+/Pnp1atXHn744Xz605/ON7/5zSRvfazu7LPPzpIlS3Luuefm/PPPz8MPP7xRBwYAANiQ1vmU3BUVFSmVSmlubk5FRUWSZPbs2TnttNMyePDgLFu2LLfffnu+9KUvbbRhAQAANrR1iqKmpqY0NDRkxx13TP/+/dPU1JTGxsZcfvnlOfDAA3PAAQdk5513zsc//vHU19fnqaee2thzAwAAbBDrFEVVVVV56KGHssMOO+SZZ57JXnvtld133z1HHHFEevTokbPPPjs/+9nP0tjYmE996lNpbm7e2HMDAABsEOsURW+88Ua6d++el19+OS+++GJOOeWUzJ07NwsXLsztt9+eJJkwYUJmzJiRb33rWznwwAM36tAAAAAbyjpF0THHHJN+/fplwYIFue+++7J48eJcdtllGTNmTKZPn54k6dWrV55++umNOiwAAMCGtk5R9JOf/CSnn356rrzyygwYMCBLly7Nz3/+89TX12fatGlpbm5Ot27dMmHChI09LwAAwAa1Thdv7dKlSwYNGpRBgwblsccey84775yVK1fmtttuy1FHHZUkOeCAAzJz5syNOiwAAMCGtk5R9HZHHnlkjjzyyPL9E044IUnyyU9+csNNBQAAsIms83WKSqVSvvWtb73j+o997GPp2bNnLr30UmefAwAAthjrFEU//OEP881vfjPDhg1LknzhC1/I5ZdfniVLlpS3+c53vpOTTjopN9xwQ+bMmbNxpgUAANjA1hpFEyZMyODBg7Pvvvumuro6SbLHHnvk0Ucfza677pqbbroppVIp2267bX784x9n4MCB2XnnnTf64AAAABvCWqOoU6dOGTt2bI444ohUVb31FaQvfvGLefLJJ/PAAw/kO9/5TvbZZ5/ss88++fjHP54f/OAHG31oAACADWWtJ1pYtmxZXn755dx1111ZtmxZrr766rz22muZOXNm/vSnP2XlypXZf//9M3fu3Jxxxhnlo0kAAABbgrVG0YQJE/Loo4+mpqYmzc3Nqa+vzwc+8IEcfvjhueGGG7LbbrslSW666aYcccQR+eMf/5ja2tqNPjgAAMCGsNYoGjp0aIYOHZok2WGHHTJixIgkye9///skydy5c1NbW5tzzjkn06ZNyxlnnJEf/vCHG3FkAACADWedT8mdJBUVFeU/9+3bN0cffXT22GOP1NTUZOedd85//ud/ZsaMGXnttdc2+KAAAAAbw3pdvLVUKrW4/+KLLyZJmpub86UvfSnjxo3LpEmT0qZNmw03IQAAwEa0XlH09iNFb/9zZWVl+vbtm3nz5gkiAABgi7JeUVRfX5/DDz88SdLQ0JCjjjoq2267berq6rLXXnvlmGOO2ShDAgAAbCzrFUWrrkFUUVGR888/Pw0NDVmwYEFeeOGF3HLLLTnnnHPy+c9/Pt/97ndTWVm5UQYGAADYkNYrio499th/uv7pp5/O/fffL4gAAIAtxnpF0drst99+2W+//TbkUwIAAGxU6xVFH/vYx9KuXbu0b98+7dq1W+3PO+20U4477rhsv/32G2lcAACADWu9ouiZZ57JlVdemcbGxtVu9fX1GTlyZH79619nzJgxG2teAACADWq9oqhjx44588wzy/d//etfZ+7cuTnuuOOSJAcddFC++MUvbtgJAQAANqJt1mfjt1+baOzYsWnXrl0uvvjizJo1K0myww47pH///ht0QAAAgI1prVFUKpVy2WWXZfbs2eVlX/7yl/OVr3wl2267ba677rr813/9V5qamnLooYfmlltu2agDAwAAbEhrjaJV1yHaZ599Mnfu3DzwwAPp06dPJk6cmL322iuDBg1K586dc8kll2yKeQEAADaotUZRbW1tHnzwwcyZMye33357vv3tb+eSSy7Js88+W95m5MiRaWxs3KiDAgAAbAzrfKKFtm3b5tOf/nQWLVqUzp07p02bNkmSpUuXZsqUKfne97630YYEAADYWNbr7HMVFRU588wzs2LFivJJF2pqanLxxRfnQx/6UOrq6jbKkAAAABvLOkVR3759U1NTk4qKipRKpXzyk59ssb6xsTEPPvhgzjvvvI0yJAAAwMayTlH0mc98Ju3atUupVMr48ePz6U9/usX6Xr16ZezYsaIIAADY4qxTFL39gq2nnXZaTjzxxFRWVpaXLVq0KLW1tZk2bVp23333DT8lAADARrJeF29Nkj/84Q8tgmjOnDnp1KlT7rnnnnTr1m2DDgcAALCxrXcUfehDHyr/eenSpXn/+9+fJDn++OPToUOHDTcZAADAJrDWKFq+fHn23XffrFy5MkOHDs3MmTPL66qrq1NVtV4nsAMAANisrDWKqqur88orr2T27Nn53e9+l169emXIkCFZsmRJKisry9crAgAA2BKtNYoqKipSWVmZ97znPfnNb36TX/ziF/nlL3+Z3XbbLfPnz0+pVNoUcwIAAGwU6/3Ztw9/+MOZNGlSfv/736dLly7li7gCAABsidYpipYsWZKLLrpoteUPPvhg3nzzzfK65ubmLF++PLfeeuuGnRIAAGAjWecjRe/0MblSqVReVyqVsnLlyg0zGQAAwCawTlHUoUOHfOtb3yrfX758ed54443stNNOGT16dIt1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AACAQhNFAABAoYkiAACg0EQRAABQaKIIAAAoNFEEAAAUmigCAAAKTRQBAACFJooAAIBCE0UAAEChiSIAAKDQRBEAAFBooggAACg0UQQAABSaKAIAAApNFAEAAIUmigAAgEITRQAAQKGJIgAAoNBEEQAAUGiiCAAAKDRRBAAAFJooAgAACk0UAQAAhSaKAACAQhNFAABAoYkiAACg0EQRAABQaKIIAAAoNFEEAAAUmigCAAAKTRQBAACFJooAAIBCE0UAAEChiSIAAKDQRBEAAFBooggAACg0UQQAABSaKAIAAApNFAEAAIUmigAAgEITRQAAQKGJIgAAoNBEEQAAUGiiCAAAKDRRBAAAFJooAgAACk0UAQAAhSaKAACAQhNFAABAoYkiAACg0EQRAABQaKIIAAAoNFEEAAAUmigCAAAKTRQBAACFJooAAIBCE0UAAEChiSIAAKDQRBEAAFBooggAACg0UQQAABSaKAIAAApNFAEAAIUmigAAgEITRQAAQKGJIgAAoNBEEQAAUGiiCAAAKDRRBAAAFJooAgAACk0UAQAAhSaKAACAQhNFAABAoYkiAACg0EQRAABQaKIIAAAotM0yiqZMmZLevXunc+fOGTJkSEqlUmuPBAAAbKU2uyhqaGjIgAEDsv/++2fSpEmZOnVqRo0a1dpjAQAAW6nNLorGjx+fRYsW5cYbb0yPHj0yfPjw3HHHHa09FgAAsJWqau0B/tHkyZPTp0+f1NTUJEn23nvvTJ06dY3bNjQ0pKGhoXx/0aJFSZLFixdv/EHX0cqGpa09AmzWNqf99d9hX4e1s79DMWwu+/qqOdblqzibXRQtXrw43bt3L9+vqKhIZWVlFixYkM6dO7fY9pprrskVV1yx2nN069Zto88JbBidRrb2BMCmYn+HYtjc9vX6+vp06tTpn26z2UVRVVVVqqurWyxr165dli5duloUXXbZZbnooovK91euXJk33ngjXbp0SUVFxSaZly3H4sWL061bt7zyyivp2LFja48DbET2dygO+zvvpFQqpb6+PjvttNNat93soqi2tjZTpkxpsay+vj5t27Zdbdvq6urVAmr77bffmOOxFejYsaO/NKEg7O9QHPZ31mRtR4hW2exOtNC7d+9MnDixfH/WrFlpaGhIbW1tK04FAABsrTa7KDr00EOzaNGi3H333UmSESNGpF+/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4x/TsWPHNa5/4403cswxx2TUqFHlZXvuuWcOOOCAjBw5MieddFImTJiQtm3bpqmpKc3Nzamurk5TU1OWLFmSJUuWpF27dpvo3QCwOXGkCIAtxvDhw3P66aevcd2wYcMye/bs8v3p06fnueeey7Jly9K3b99MnDix/PG60aNH56GHHsp99923SeYGYPPmRAsAbJW+853vpEePHjnkkEPS1NSUe+65J7/4xS8yffr08jZz5szJY4891opTArA5cKQIgC3Gl7/85YwYMWKN61Z9fC5Jnn766YwePTpf+9rX8swzz+SWW27J+973vnz0ox/N4MGDs/322ydJJkyYkLPOOivTpk3Lu9/97k31NgDYzDhSBMAWY/jw4ZkxY8Yab2effXZ5uzvvvDNXX311OXQOOuigvPTSS5kzZ05OO+208naDBg3K/vvvnwsvvHCTvxcANh+iCICtzsiRI1tEUpJ85StfyeDBg1NTU9Ni+RVXXJFx48ZlxowZm3JEADYjPj4HwBahubk5Q4cOzVVXXbXG9QsXLsyAAQOSpHx67RUrVqS5uTlNTU058sgjc+KJJ+bhhx/OI488Ur6o6yGHHJLp06dnl1122STvA4DNjygCYItQWVmZG264Iaeccsoa1w8bNiwvvPBCi2UNDQ1pbGxMVVVVLrrooiTJqFGjMm/evFx77bXl7QQRQLG5ThEAAFBovlMEAAAUmigCAAAKTRQBAACFJooAAIBCE0UAAEChiSIAAKDQRBEAAFBooggAACg0UQQAABSaKAIAAArt/wN0xFRNvSEVFAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "目标达成度表格：\n",
      "   目标达成度  目标1  目标2  目标3\n",
      "0    平均值  5.0  5.0  5.0\n",
      "1  90%以上  0.0  0.0  0.0\n",
      "2  80%以上  0.0  0.0  0.0\n",
      "3  70%以上  0.0  0.0  0.0\n",
      "4  60%以上  0.0  0.0  0.0\n",
      "5  60%以下  3.0  3.0  3.0\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0sAAAIfCAYAAAChLEcjAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABYDElEQVR4nO3de1hVZd7/8Q9nRDmKigLhMTNJLQbTbNDMxEYxMy3EDlpWakctnjzW4+SgTuo4ZWWak+ExM81RM8tSqylTSkkEFVNUUEeEzUlkc9q/P/yxn3YsEE3Yiu/Xda1rrrXWfe/1XTDL9od7rXs5WCwWiwAAAAAANhztXQAAAAAAXI0ISwAAAABggLAEAAAAAAYISwAAAABggLAEAAAAAAYISwAAAABggLAEAAAAAAYISwAAAABggLAEANeZgoICTZ8+XWfOnLms/qmpqdq9e7fhvrS0NHXv3l3ffffdZX12UVGRPvvsM2VmZkqSjh07dkn9Fy1apKeffvqSj1tcXKzfvqM9PT1de/bsueTPOXTokJ588kkdOHCgxn0yMzO1ZMkSmUymSvvOnj2rDz74QKWlpRf9nIyMDP366682206ePKkRI0Zo06ZNNa4HAPB/CEsAcI359ttv5eDgUOMlPz/fpv/58+c1depUZWdnW9f379+vY8eOKT093WY5evSo0tPTbfpPmzZNAwcOVEZGRqXaHBwctHPnzhp9uTdy7tw59e/fX999953Wrl2rjh07XtIXfXd3dy1atEjHjx+3bisrK9O5c+dUUlJSZb+5c+eqW7duMpvNkqTp06crJiZG5eXll1T/mjVrFB8frwYNGtS4z7FjxzRy5EjD8Hr48GE9/vjj2rhx40U/5/XXX9fw4cNttpWXl+vDDz+UyWTSpk2btHjx4kr9evfufUn/f3JwcNCQIUNqfH4AcC0jLAHANcbd3V2StH//fuXn51e5LFiwQJLk4uJi2N/NzU2SdPDgQYWGhqply5YKDg62WVq3bq0pU6bY9H/nnXfk7e2t+++/X0VFRTb7nJ2dJUne3t6XdW4NGzaUJLm6umrw4MF6/vnndf/992v79u027X744QfDL/GPPvqoLBaLQkJCrNucnZ3VqFEjffXVV4bHLCws1Ny5c9WpUyfrz2Ty5Mk6duyY3n77bcM+paWlysvLk9lsto5IlZWVaeHChXrkkUcUEhJSqU9ZWZkKCwutgazC738fv9WtWzcNGDBAubm5lfYVFxdr3rx51hDo6upa6TMqQluzZs3k6empcePG6c0337Rp4+zsrBdffFHnz5+3Lv/617/05Zdf2myrWEaMGGFYKwDUR872LgAAcGkcHS/8ncvDw0ONGjWqsl3FF9qKAFPBwcHB5n87duyo//73v/L19bUJVsXFxcrPz7cer4KXl5eWLVump59+Wrm5udYv+7+t7WIjK8eOHdP58+er3H/8+HEdOHBADz/8sHJzc+Xq6qpz585Zw1RFnadPn5a3t7eys7M1fvx4vfbaa2rVqpUk6fPPP1d8fLyWLl0qs9lc5c9q7ty5Kiws1LRp06zbgoODNWHCBL3yyivq3bu3OnbsaNPnu+++01133WX4eYsXLzYcwanw7rvvavTo0dagWTF6VV5ersLCQp08eVKzZs2Sq6urHBwcFBISot27d2v37t0qKSmRp6enZs+erfz8fL311ltKSUnRe++9J0dHR+vvtELFz8nZ2VkRERFat26dpkyZotGjR8vV1dW6z8nJyfp7zMzM1Pjx4xUZGak777zT+llOTk5ycXGRk5OTnJycqjw/AKhPCEsAcI251C+qFWHp/fff18qVK639R4wYIScnJ7366qvq2bNnpX6urq5q3Lix4Wf+6U9/0u7du5WWlqbGjRvL1dVVjo6O1lGWu+66S05OTiovL1dpaameeOIJzZgxw9o/Ojpae/bssQlaFRwdHfXSSy/J1dVVFovFOmKzc+dOhYWFWdtUnJuDg4NcXV310UcfadKkSdbPzMvL065du+Th4SFnZ+dKoU+SfvnlF73++uuaOnWqWrRoYbNv4sSJ2rBhg/7yl79o27Ztat26tXVf165ddeDAAetozrlz59S9e3cNGzZMkydP1ueff67mzZurc+fOlY5ZMeo2atQoLV++3Lq9TZs2kqRPPvlErVq1kpubm5ycnPTXv/5V/fv3V1hYmMxmszUEN27cWBs2bFC3bt10zz33WD+nuLjY+vv7fTC+++67deedd9o8n/X7kccXX3xROTk5+uijj/TRRx9Zt69cuVLR0dE2P38AqO8ISwBwjaoYQamp2267TX5+ftZngB599FH5+PiovLxcR44cqfILcElJiRo3biw/Pz+dP39eTk5O1vDRtGlTLVq0SK6urnJyctLOnTs1ffp0LVq0yCYs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4OBK7YcPH6533nlHH3zwwWVNo11WVqZHHnlEd911l3r06CHpQoDbvXu3evfuXSlYVXBxcbHuKyoq0tChQ7Vjxw6tXr260m2XmZmZ+uqrrzR48GDdeeedWrFiRbU19ezZU9u3b9cTTzyhm266SUuXLtXBgwfVp08f3XPPPVq3bp169+59yecKANcywhIAXKMqnlmqavn9l+cnnnhCK1eurLT9H//4h5o2baphw4bZbG/RooX++te/atmyZdq6davNPovFooKCAhUVFenOO+9UQkKCNm3aZDPhRJcuXbRo0SJ98cUXNi93TU9P19mzZ22eZ8rIyLBOU37u3Dl5enrKy8tLzzzzjHX/b28jS01NVWBgoKQLI0tnz55V+/btNX36dJ09e1Znz57V+PHjFRQUVOm2NSOTJ09Ws2bNdO+999psz8jIMAxLXl5eGjNmjBwcHC56e5v0fxNSVHByctLDDz+suXPn2my/lCm5K2ax+9e//mWddvy33n33XTVv3lx//vOf9dRTT2nhwoVV3hb5W9u3b1dQUJA+/fRT/c///I9SUlKqfTYOAOozwhIAXGNq8uXcSHR0tDp06GDT//Dhw5ozZ47GjRtnHbH47f4nn3xSbdu2VWpqqnXbhx9+qA0bNmj9+vV6/fXX9eKLL+rbb79V165dKx1z2LBhWrFihXUmNknasWOHHB0ddcstt+iNN97Qo48+qoMHD6pt27YymUz6y1/+IhcXFzk6Omr+/PmSpJkzZ9oEmW3btun222+3rru7uys+Pl6vvPKK1q9fr2XLlmnWrFlau3Ztle+KqjjXiRMnatmyZXrrrbcq3W536NAhw7D0W9VNDpGdna3XX39df/vb36y3GVaIi4tT586dL/v36ebmpk8++cQ6G+FvPyczM1Nz5szRCy+8IAcHBz3wwANq0aKFHn30UetkGBV+vx4WFqZ33nlHJpNJAwYMUFhYmDIzM23a/D78AUB9xWx4AHCNqbilrabvWSopKbG5ravipaXFxcVq27at1q1bp549e2r16tVKSEjQ8ePH5evrK+lCCDlw4ID1VrPXX39d06dP1+bNm9W+fXs9/PDD+uCDDxQTE6OwsDAFBQXJ29tbLi4uslgsMpvNatGihT7++GP17dtX/v7+WrhwoXr27Cl/f3+VlZXp+PHj+utf/yp3d3d17dpV3t7e+u6777Ru3To9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CUvOzs5yc3Oz2ebu7q7CwsIq+0yYMEGbN29Wx44d1aFDB82aNUtr1qypsv3EiROVm5trXU6cOHHF6gcAAABQ/znb46B+fn5KSkqy2Zafny9XV9caf4aPj4/Onj0rs9lcKXhJkpubm+F2AAAAAKgJu4wshYeHa+fOndb1tLQ0mc1m+fn5VdlnyJAhNn12796tgIAAAhEAAACAWmGXsBQREaHc3FzFx8dLkmbOnKk+ffrIyclJeXl5KikpqdSnU6dOGjdunH788Udt3LhRU6dO1dixY+u6dAAAAADXCbvchufs7KyFCxcqJiZGsbGxKisr044dOyRdCEXz5s3ToEGDbPpMnDhRx44d0z333KOmTZtqzJgxmjhxoh2qBwAAAHA9sEtYkqRBgwYpNTVVCQkJuuOOO9SkSRNJF27JM+Li4qLFixdf9H1MAAAAAHAl2C0sSVJgYKACAwPtWQIAAAAAGLLLM0sAAAAAcLUjLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAcISAAAAABggLAEAAACAAbuFpaSkJIWHh8vX11exsbGyWCwX7bNjxw516NBB/v7+mjt3bh1UCQAAAOB6ZZewZDabFRUVpbCwMCUkJCg5OVlLliyptk9mZqYGDhyoYcOG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",
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "# 设置中文字体\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体\n",
    "plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题\n",
    "\n",
    "# 主程序\n",
    "if __name__ == \"__main__\":\n",
    "    file_path = input(\"请输入 Excel 文件路径：\")\n",
    "    try:\n",
    "        # 尝试读取文件\n",
    "        df = pd.read_excel(file_path, sheet_name='Sheet', header=None)  # 不自动识别列名\n",
    "        print(\"文件读取成功！\")\n",
    "        print(\"文件内容：\")\n",
    "        print(df.head())  # 打印前5行数据，检查文件内容是否正确\n",
    "    except Exception as e:\n",
    "        print(f\"文件读取失败，请检查文件路径或文件格式。错误信息：{e}\")\n",
    "        exit()\n",
    "\n",
    "    # 计算每个学生每个目标的总成绩\n",
    "    def calculate_target_scores(df):\n",
    "        students = []\n",
    "        result = {}\n",
    "\n",
    "        # 提取所有学生的数据块\n",
    "        current_student = None\n",
    "        for i in range(len(df)):\n",
    "            if isinstance(df.iloc[i, 0], str) and '学生' in df.iloc[i, 0]:\n",
    "                if current_student is not None:\n",
    "                    students.append(current_student)\n",
    "                current_student = {'name': df.iloc[i, 0].strip(), 'data': []}\n",
    "            elif current_student is not None:\n",
    "                current_student['data'].append(df.iloc[i].tolist())\n",
    "\n",
    "        if current_student is not None:\n",
    "            students.append(current_student)\n",
    "\n",
    "        # 计算每个学生的目标成绩\n",
    "        for student in students:\n",
    "            student_name = student['name']\n",
    "            student_data = student['data']\n",
    "            result[student_name] = {}\n",
    "\n",
    "            # 提取百分比权重\n",
    "            # 找到“合计”行\n",
    "            for row in student_data:\n",
    "                if row[0] == '合计':\n",
    "                    percentages = {\n",
    "                        '作业': float(row[2].strip('%')) / 100 if isinstance(row[2], str) else row[2],\n",
    "                        '实验': float(row[3].strip('%')) / 100 if isinstance(row[3], str) else row[3],\n",
    "                        '课堂练习': float(row[4].strip('%')) / 100 if isinstance(row[4], str) else row[4],\n",
    "                        '期中考试': float(row[5].strip('%')) / 100 if isinstance(row[5], str) else row[5],\n",
    "                        '期末成绩': float(row[7].strip('%')) / 100 if isinstance(row[7], str) else row[7],\n",
    "                    }\n",
    "                    break\n",
    "\n",
    "            # 提取所有目标（如目标1、目标2、目标3等）\n",
    "            for row in student_data:\n",
    "                if isinstance(row[1], str) and row[1].startswith('目标'):\n",
    "                    target = row[1]\n",
    "\n",
    "                    # 计算作业、实验、课堂练习、期中考试的成绩（不再乘以横向百分比）\n",
    "                    homework_score = row[2] * percentages['作业']\n",
    "                    lab_score = row[3] * percentages['实验']\n",
    "                    practice_score = row[4] * percentages['课堂练习']\n",
    "                    midterm_score = row[5] * percentages['期中考试']\n",
    "\n",
    "                    # 计算期末成绩\n",
    "                    final_score = row[7] * percentages['期末成绩']\n",
    "\n",
    "                    # 总成绩\n",
    "                    total_score = homework_score + lab_score + practice_score + midterm_score + final_score\n",
    "                    result[student_name][target] = round(total_score, 2)  # 保留两位小数\n",
    "\n",
    "        return result\n",
    "\n",
    "    # 计算每个目标的平均成绩\n",
    "    def calculate_average_scores(target_scores):\n",
    "        # 获取所有目标名称\n",
    "        targets = set()\n",
    "        for student_scores in target_scores.values():\n",
    "            targets.update(student_scores.keys())\n",
    "        targets = sorted(targets)  # 按字母顺序排序\n",
    "\n",
    "        average_scores = {}\n",
    "        for target in targets:\n",
    "            scores = [v[target] for v in target_scores.values() if target in v and v[target] is not None]\n",
    "            average_scores[target] = round(sum(scores) / len(scores), 2) if scores else 0  # 保留两位小数\n",
    "\n",
    "        return average_scores\n",
    "\n",
    "    # 绘制散点图和柱状图\n",
    "    def plot_graphs(average_scores):\n",
    "        plt.figure(figsize=(10, 6))\n",
    "\n",
    "        # 绘制散点图\n",
    "        plt.scatter(average_scores.keys(), average_scores.values())\n",
    "        plt.axhline(y=sum(average_scores.values()) / len(average_scores), color='r', linestyle='--', label='平均分')\n",
    "        plt.xlabel('目标')\n",
    "        plt.ylabel('平均成绩')\n",
    "        plt.title('目标平均成绩散点图')\n",
    "        plt.legend()\n",
    "\n",
    "        # 绘制柱状图\n",
    "        plt.figure(figsize=(10, 6))\n",
    "        plt.bar(average_scores.keys(), average_scores.values())\n",
    "        plt.xlabel('目标')\n",
    "        plt.ylabel('平均成绩')\n",
    "        plt.title('目标平均成绩柱状图')\n",
    "\n",
    "        plt.show()\n",
    "\n",
    "    # 计算目标达成度并生成表格和柱状图\n",
    "    def calculate_and_plot_achievement(target_scores):\n",
    "        # 获取所有目标名称\n",
    "        targets = set()\n",
    "        for student_scores in target_scores.values():\n",
    "            targets.update(student_scores.keys())\n",
    "        targets = sorted(targets)  # 按字母顺序排序\n",
    "\n",
    "        achievement_data = {\n",
    "            '目标达成度': ['平均值'] + [f'{i}%以上' for i in range(90, 50, -10)] + ['60%以下'],\n",
    "            **{target: [0] * 6 for target in targets}\n",
    "        }\n",
    "\n",
    "        for student_scores in target_scores.values():\n",
    "            for target, score in student_scores.items():\n",
    "                if score is None:\n",
    "                    continue\n",
    "                achievement_percentage = score / 100 * 100\n",
    "                if achievement_percentage >= 90:\n",
    "                    achievement_data[target][1] += 1\n",
    "                elif 80 <= achievement_percentage < 90:\n",
    "                    achievement_data[target][2] += 1\n",
    "                elif 70 <= achievement_percentage < 80:\n",
    "                    achievement_data[target][3] += 1\n",
    "                elif 60 <= achievement_percentage < 70:\n",
    "                    achievement_data[target][4] += 1\n",
    "                else:\n",
    "                    achievement_data[target][5] += 1\n",
    "\n",
    "        for target in targets:\n",
    "            total_students = sum(achievement_data[target][1:])\n",
    "            if total_students > 0:\n",
    "                achievement_data[target][0] = round(sum([(i + 1) * achievement_data[target][i + 1] for i in range(5)]) / total_students, 2)  # 保留两位小数\n",
    "\n",
    "        df_achievement = pd.DataFrame(achievement_data)\n",
    "        print(\"目标达成度表格：\")\n",
    "        print(df_achievement)\n",
    "\n",
    "        # 绘制达成度比例柱状图\n",
    "        plt.figure(figsize=(10, 6))\n",
    "        bottom = np.zeros(len(targets))\n",
    "        for i in range(1, 6):\n",
    "            plt.bar(targets, [achievement_data[target][i] for target in targets], bottom=bottom, label=f'{(6 - i) * 10}% - {(7 - i) * 10}%')\n",
    "            bottom = [bottom[j] + achievement_data[targets[j]][i] for j in range(len(targets))]\n",
    "        plt.xlabel('目标')\n",
    "        plt.ylabel('人数')\n",
    "        plt.title('目标达成度分布柱状图')\n",
    "        plt.legend()\n",
    "        plt.show()\n",
    "\n",
    "    # 计算目标成绩并生成图表\n",
    "    target_scores = calculate_target_scores(df)\n",
    "    print(\"每个学生的目标成绩：\")\n",
    "    for student, scores in target_scores.items():\n",
    "        print(f\"{student}: {scores}\")\n",
    "\n",
    "    average_scores = calculate_average_scores(target_scores)\n",
    "    print(\"每个目标的平均成绩：\")\n",
    "    print(average_scores)\n",
    "\n",
    "    plot_graphs(average_scores)\n",
    "    calculate_and_plot_achievement(target_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "F:\\作业\\成绩表3.xlsx"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "F:\\作业\\成绩表2.xlsx"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
